LINUX.ORG.RU

python - queue создает новый Thread?


0

1

умер поток с таким эксепшеном:

can't start new thread ---   File "/var/www/beta11/engine/as_threads.py", line 76, in _worker
    self.worker(args)
  File "/var/www/beta11/include/mod_main.py", line 231, in w_manager
    res = self.w_work(acc, http, sqlite, tid, ac)
  File "/var/www/beta11/include/mod_main.py", line 363, in w_work
    sqlite.upd('rows', data, 'invalid')
  File "/var/www/beta11/engine/as_sqlite.py", line 445, in upd
    self.parent.queue.addTask({'sql': 'upd', 'table': table, 'data': data, 'action': action})
  File "/var/www/beta11/engine/as_queue.py", line 37, in addTask
    self.tasks_for_main.put(task)
  File "/usr/local/lib/python3.2/multiprocessing/queues.py", line 107, in put
    self._start_thread()
  File "/usr/local/lib/python3.2/multiprocessing/queues.py", line 187, in _start_thread
    self._thread.start()
  File "/usr/local/lib/python3.2/threading.py", line 683, in start
    _start_new_thread(self._bootstrap, ())

self.tasks_for_main.put(task)
_start_new_thread

так что получается при добавлении задачи в queue - создается ещё один Thread?

так что получается при добавлении задачи в queue - создается ещё один Thread?

Только для первой задачи.

baverman ★★★
()
Ответ на: комментарий от sergey-novikov

queue - это и есть Thread что-ли?

Нет. Отдельный поток для очереди нужен, чтобы осуществлять IPC. Это детали реализации, по идее, о них знать не обязательно. Но они могут вылезти в пограничных ситуациях, например, как у тебя.

baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.