多处理BaseManager shutdown()需要20秒

时间:2013-03-01 04:44:59

标签: python multiprocessing

我正在使用BaseManager与工作进程池共享队列。我在其上调用start()以使管理器在另一个线程中运行。

在shutdown()下,文档说“只有在使用start()启动服务器进程时才可用。”但是,如果我调用shutdown(),前台进程将在每次终止之前在管理器进程上阻塞20秒。如果我不调用shutdown(),前台进程会立即离开吗?

我错过了什么?

此外,有没有人知道为什么文档说“这可以被多次调用。”?为什么要向管理器进程发送多个关闭信号?

1 个答案:

答案 0 :(得分:1)

它按设计等待20秒。请refer here了解更多信息

        process.join(timeout=0.2)
        if process.is_alive():
            util.info('manager still alive')
            if hasattr(process, 'terminate'):
                util.info('trying to `terminate()` manager process')
                process.terminate()
                process.join(timeout=0.1)
                if process.is_alive():
                    util.info('manager still alive after terminate')