可以从IDLE运行多处理Process类

时间:2016-02-09 13:20:38

标签: python multiprocessing python-idle

多处理的基本示例当从文件执行时,Process类会运行,但不会从IDLE执行。为什么这样,可以做到吗?

from multiprocessing import Process

def f(name):
    print('hello', name)

p = Process(target=f, args=('bob',))
p.start()
p.join()

1 个答案:

答案 0 :(得分:7)

是。以下工作在该函数f中是在单独的(第三个)过程中运行的。

from multiprocessing import Process

def f(name):
    print('hello', name)

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

但是,要查看print输出,至少在Windows上,必须从控制台启动IDLE。

C:\Users\Terry>python -m idlelib
hello bob

(在2.x上使用idlelib.idle。原因是IDLE在单独的进程中运行用户代码。目前,IDLE进程和用户代码进程之间的连接是通过套接字实现的。多处理完成的fork不会复制或继承套接字连接。当通过图标或资源管理器(在Windows中)启动IDLE时,打印输出无处可去。从具有python(而不是pythonw)的控制台启动时,输出将转到控制台,如上所述。