Python多处理工作在Linux中,但不在Windows中

Mou*_*jan 1 python linux windows multiprocessing

我有一个多处理脚本,我在linux和windows中都尝试过

在Linux中它工作正常但在Windows中脚本运行一些随机的未知结果,脚本甚至没有结束

脚本

from multiprocessing.pool import Pool
def get_urls1():
    res = [1,2,3,4,5]

    nprocs = 20 # nprocs is the number of processes to run
    ParsePool = Pool(nprocs)
    #ParsePool.map(btl_test,url)
    ParsedURLS = ParsePool.map(extractData,res)

def extractData(r):
    print r

get_urls1()
Run Code Online (Sandbox Code Playgroud)

Linux输出

1
3
2
5
4
Run Code Online (Sandbox Code Playgroud)

但是当我在Windows中运行相同的脚本时,它并没有给出确切的结果,因为linux和脚本甚至没有结束(但是如果我删除多处理脚本工作)

我应该怎样修复多处理工作?

fal*_*tru 5

根据multiprocessing文档 - 编程指南 - Windows

安全导入主模块

确保新的Python解释器可以安全地导入主模块,而不会导致意外的副作用(例如启动新进程).

...

相反,应该通过使用if __name__ == '__main__':如下来保护程序的"入口点" :

...

所以,守护get_urls1()调用if __name__ == '__main__':

if __name__ == '__main__':
    get_urls1()
Run Code Online (Sandbox Code Playgroud)