相关疑难解决方法(0)

多处理炸弹

我正在使用Doug Hellmann关于多处理的教程中的以下示例:

import multiprocessing

def worker():
    """worker function"""
    print 'Worker'
    return

if __name__ == '__main__':
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target=worker)
        jobs.append(p)
        p.start()
Run Code Online (Sandbox Code Playgroud)

当我试图在if语句之外运行它时:

import multiprocessing

def worker():
    """worker function"""
    print 'Worker'
    return

jobs = []
for i in range(5):
    p = multiprocessing.Process(target=worker)
    jobs.append(p)
    p.start()
Run Code Online (Sandbox Code Playgroud)

它开始不间断地产生进程,并且阻止它的唯一方法是重启!

为什么会这样?为什么它没有生成5个进程并退出?为什么我需要if语句?

python multiprocessing

36
推荐指数
2
解决办法
4917
查看次数

使用多处理时,在窗口中强制使用if __name __ =="__ main__"

在Windows上的python中使用多处理时,应该保护程序的入口点.文档说"确保新的Python解释器可以安全地导入主模块,而不会导致意外的副作用(例如启动新进程)".任何人都可以解释这究竟是什么意思?

python windows multiprocessing

11
推荐指数
2
解决办法
5696
查看次数

标签 统计

multiprocessing ×2

python ×2

windows ×1