Я использую multiprocessing
в задаче с большой нагрузкой на процессор и пытаюсь выяснить, какую очередь использовать для ведения журнала.
У меня была «рабочая» версия, пока я не понял, что сталкиваюсь с this deadlock-problem.
Решением, которое я использовал, было использование root-logger для использования QueueHandler
, когда отдельный поток считывал эту очередь. В исходном решении я использовал multiprocessing.Queue
для этого, как описано здесь .
Затем я понял, что это приводит к описанному тупику, и теперь я пытаюсь выяснить, какую очередь использовать/ Как войти в систему.
Если я использую класс SimpleQueue
из queue
, после установки QueueHandler
сообщения не появляются. Если я использую SimpleQueue
-класс из multiprocessing
, код завершается с ошибкой регистрации:
AttributeError: 'SimpleQueue' object has no attribute 'put_nowait'
Поскольку это было исправлено только в python3.7
Я предполагаюдокументация не была обновлена. Кто-нибудь знает, как заставить эту регистрацию работать, не сталкиваясь с тупиками?