multiprocessing.SimpleQueue против queue.SimpleQueue, какой использовать? - PullRequest
0 голосов
/ 30 сентября 2019

Я использую multiprocessing в задаче с большой нагрузкой на процессор и пытаюсь выяснить, какую очередь использовать для ведения журнала.

У меня была «рабочая» версия, пока я не понял, что сталкиваюсь с this deadlock-problem.

Решением, которое я использовал, было использование root-logger для использования QueueHandler, когда отдельный поток считывал эту очередь. В исходном решении я использовал multiprocessing.Queue для этого, как описано здесь .

Затем я понял, что это приводит к описанному тупику, и теперь я пытаюсь выяснить, какую очередь использовать/ Как войти в систему.

Если я использую класс SimpleQueue из queue, после установки QueueHandler сообщения не появляются. Если я использую SimpleQueue -класс из multiprocessing, код завершается с ошибкой регистрации:

AttributeError: 'SimpleQueue' object has no attribute 'put_nowait'

Поскольку это было исправлено только в python3.7 Я предполагаюдокументация не была обновлена. Кто-нибудь знает, как заставить эту регистрацию работать, не сталкиваясь с тупиками?

...