Python `multiprocessing.Manager ()` не выключается должным образом - PullRequest
0 голосов
/ 16 января 2019

Возможно, я где-то допускаю тривиальную ошибку, но даже минимальный пример использования multiprocessing.Manager в блоке with (или без) иногда приводит к появлению сообщения об ошибке:

import logging
import multiprocessing


def test():
    logger = multiprocessing.log_to_stderr()
    logger.setLevel(logging.INFO)
    with multiprocessing.Manager() as m:
        print("Shutdown")
    print("Done")

if __name__ == "__main__":
    test()

ожидаемый результат (происходит большую часть времени):

[INFO/SyncManager-1] child process calling self.run()
[INFO/SyncManager-1] created temp directory /tmp/pymp-ovckulfx
[INFO/SyncManager-1] manager serving at '/tmp/pymp-ovckulfx/listener-2huadgai'
Shutdown
[INFO/MainProcess] sending shutdown message to manager
[INFO/SyncManager-1] process shutting down
[INFO/SyncManager-1] process exiting with exitcode 0
Done
[INFO/MainProcess] process shutting down

неожиданный результат (иногда бывает):

[INFO/SyncManager-1] child process calling self.run()
[INFO/SyncManager-1] created temp directory /tmp/pymp-1781pg20
[INFO/SyncManager-1] manager serving at '/tmp/pymp-1781pg20/listener-w5fsqqpv'
Shutdown
[INFO/MainProcess] sending shutdown message to manager
[INFO/SyncManager-1] process shutting down
[INFO/SyncManager-1] Failure to send message: ('#RETURN', None)
[INFO/SyncManager-1]  ... request was (None, 'shutdown', (), {})
[INFO/SyncManager-1]  ... exception was BrokenPipeError(32, 'Broken pipe')
[INFO/SyncManager-1] process exiting with exitcode 0
Done
[INFO/MainProcess] process shutting down

Я использую Python 3.6.5 (по умолчанию, 6 июля 2018, 09:41:10), [GCC 5.4.0 20160609] в Linux

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...