小编Lau*_*ura的帖子

为什么Python的多处理模块在Windows上启动新进程时会导入__main__?

我正在为初学者学习图书馆,我正在使用Python中的多处理模块.我遇到了这个问题:导入和使用一个使用多处理的模块,而不会在Windows上造成无限循环

举个例子,假设我有一个模块mylibrary.py:

# mylibrary.py

from multiprocessing import Process

class MyProcess(Process):
    def run(self):
        print "Hello from the new process"

def foo():
    p = MyProcess()
    p.start()
Run Code Online (Sandbox Code Playgroud)

以及调用此库的主程序:

# main.py

import mylibrary

mylibrary.foo()
Run Code Online (Sandbox Code Playgroud)

如果我main.py在Windows上运行,它会尝试将main.py导入到新进程中,这意味着代码会再次执行,从而导致无限循环的进程生成.我可以像这样解决它:

import mylibrary

if __name__ == "__main__":
    mylibrary.foo()
Run Code Online (Sandbox Code Playgroud)

但是,这对初学者来说非常困惑,而且似乎没有必要.正在创建新流程mylibrary,为什么新流程不会导入mylibrary?有没有办法解决这个问题而不必改变main.py

顺便说一句,我正在使用Python 2.7.

python windows multiprocessing python-2.7

22
推荐指数
1
解决办法
8650
查看次数

标签 统计

multiprocessing ×1

python ×1

python-2.7 ×1

windows ×1