Python 可以从空闲状态运行多处理进程类吗

Python 可以从空闲状态运行多处理进程类吗,python,multiprocessing,python-idle,Python,Multiprocessing,Python Idle,多处理进程类的一个基本示例是从文件执行时运行,而不是从空闲时运行。这是为什么?它能做到吗 from multiprocessing import Process def f(name): print('hello', name) p = Process(target=f, args=('bob',)) p.start() p.join() 对。以下工作在函数f在单独的(第三个)进程中运行 但是,要查看打印输出,至少在Windows上,必须从这样的控制台启动IDLE C:\Users

多处理进程类的一个基本示例是从文件执行时运行,而不是从空闲时运行。这是为什么?它能做到吗

from multiprocessing import Process

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

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

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

但是,要查看
打印
输出,至少在Windows上,必须从这样的控制台启动IDLE

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

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

我以前曾考虑过在空闲运行菜单中添加“在控制台中运行”。我之前的使用案例,使用WindowsGetch和彩色打印输出,是相当深奥的。看到多进程的打印输出要少得多,这是调试带有
print
语句的多进程代码所必需的。所以我提高了这个加法的优先级。@MathBio我已经用这个愚弄了另一个。这篇文章的答案是由PythonIdle的开发人员给出的,因此要高得多。
C:\Users\Terry>python -m idlelib
hello bob