Woj*_*Zet 3 python python-3.x python-multiprocessing
我的代码没有产生2个进程,我也不知道为什么。我正在使用来自多处理python库的Process。
import os
from multiprocessing import Process
def dummy():
while True:
print(os.getpid())
p1 = Process(target=dummy())
p2 = Process(target=dummy())
p1.start()
p2.start()
p1.join()
p2.join()
Run Code Online (Sandbox Code Playgroud)
预期结果:创建了2个进程-在Windows 7任务管理器中可见,并且我的代码打印了2个不同的进程ID
实际结果:仅运行一个python进程,仅输出一个进程ID。
3480
3480
3480
Run Code Online (Sandbox Code Playgroud)
您的代码没有按照您认为的去做。在这些行的第一行:
p1 = Process(target=dummy())
Run Code Online (Sandbox Code Playgroud)
您正在调用该dummy()函数。如果添加一些打印语句,将会看到您永远不会超出此行。因为调用会dummy()在主进程中启动一个无限循环,而该循环只会永远打印主进程的pid。
改为这样做:
p1 = Process(target=dummy)
p2 = Process(target=dummy)
Run Code Online (Sandbox Code Playgroud)
也就是说,不要调用 dummy,只需传递函数对象即可。然后以后
p1.start()
Run Code Online (Sandbox Code Playgroud)
(等)将dummy()在您想要的新过程中调用。
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |