#python #python-multiprocessing
#python #python-многопроцессорная обработка
Вопрос:
Мой многопроцессорный код, кажется, работает нормально, пока я не попытаюсь показать некоторые результаты с помощью .get(), где он будет зависать вечно, если я не использую .get (timeout = 5), где я получаю сообщение об ошибке, говорящее, что время ожидания истекло. Я использую код непосредственно со страницы документации по многопроцессорной обработке, чтобы убедиться в отсутствии ошибок.
from multiprocessing import Process, Queue
def f(q):
q.put([42, None, 'hello'])
if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=(q,))
p.start()
print(q.get(timeout=5)) # prints "[42, None, 'hello']"
p.join()
---------------------------------------------------------------------------
Empty Traceback (most recent call last)
<ipython-input-14-6adfdb672fe3> in <module>
8 p = Process(target=f, args=(q,))
9 p.start()
---> 10 print(q.get(timeout=5)) # prints "[42, None, 'hello']"
11 p.join()
~Anaconda3libmultiprocessingqueues.py in get(self, block, timeout)
103 timeout = deadline - time.monotonic()
104 if not self._poll(timeout):
--> 105 raise Empty
106 elif not self._poll():
107 raise Empty
Empty:
Я действительно понятия не имею, почему .get () занимает целую вечность, потому что почти каждый фрагмент примера кода, который я нахожу для многопроцессорной обработки, кажется, использует его просто отлично.
Комментарии:
1. У меня ваш код работает просто отлично.
2. Тогда я не уверен, в чем моя проблема. Мой компьютер не обязательно является медленным компьютером, но я не запустил ни одного блока многопроцессорного кода, который работает для меня, поэтому я думаю, что я могу внести некоторые изменения в свою систему, чтобы она работала
3. Какая версия Python и где вы запускаете это (IDE)?