Pla*_*uck 4 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()
Run Code Online (Sandbox Code Playgroud)
是.该功能的以下工作在f单独的(第三个)过程中运行.
from multiprocessing import Process
def f(name):
print('hello', name)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
Run Code Online (Sandbox Code Playgroud)
但是,要查看print输出,至少在Windows上,必须从控制台启动IDLE,就像这样.
C:\Users\Terry>python -m idlelib
hello bob
Run Code Online (Sandbox Code Playgroud)
(idlelib.idle在2.x上使用.)原因是IDLE在单独的进程中运行用户代码.目前,IDLE进程和用户代码进程之间的连接是通过套接字实现的.多处理完成的fork不会复制或继承套接字连接.当通过图标或资源管理器(在Windows中)启动IDLE时,打印输出无处可去.当从控制台启动时python(而不是pythonw),输出进入控制台,如上所述.