Python 多重处理在导入时停止

问题描述 投票:0回答:1

我在 python 中使用多重处理时遇到问题。以下代码将停止并且不会抛出任何错误消息:

from multiprocessing import Manager

print("ok1")
manager = Manager()
print("ok2")

它不打印第二个ok。

我尝试在多处理源代码中添加一些打印,以查看它停止的位置。好像就到这里了:

    def Manager(self):
        '''Returns a manager associated with a running server process

        The managers methods such as `Lock()`, `Condition()` and `Queue()`
        can be used to create shared objects.
        '''
        from .managers import SyncManager
        m = SyncManager(ctx=self.get_context())
        m.start()
        return m

导入后。 我可以做什么来解决这个问题?谢谢!

python python-3.x import multiprocessing deadlock
1个回答
0
投票

如图所示的代码在 Windows 上运行不会出现错误。在其他平台上,您需要确保代码在主程序中执行 - 例如,

from multiprocessing import Manager

if __name__ == '__main__':
    print("ok1")
    with Manager() as _:
        print("ok2")

...在 macOS、Linux 等上运行不会出现错误。

© www.soinside.com 2019 - 2024. All rights reserved.