Skip to main content
 首页 » 编程设计

Python 多处理 : processes do not start

2025年05月04日11mq0036

我刚接触 Python (2.7) 中的多处理。

我尝试运行以下代码:

from time import sleep 
from multiprocessing import Process 
import multiprocessing 
 
def func(x): 
    print("start %s"%(x)) 
    sleep(x) 
    print("end %s"%(x)) 
    return 
 
if __name__ == '__main__': 
 
    Process(target=func(10)).start() 
    Process(target=func(1)).start() 

返回的内容如下:

start 10 
end 10 
start 1 
end 1 

虽然 start 1 和 end 1 应该先验出现在 end 10 之前。

如果能帮助我理解我在这里可能遗漏的内容,我将不胜感激。

请您参考如下方法:

你写:

Process(target=<b>func(10)</b>).start()

这意味着 Process 永远不会被赋予 func,它被赋予 func(10) 的结果 因为 Python 首先 从左到右评估参数,然后将这些评估的结果传递给外部函数(这里是 Process(..) 调用)。

为了让子进程评估函数,你应该这样写:

Process(target=<b>func,args=(10,)</b>).start()

现在您传递一个对func 函数的引用,并提供一个参数元组args子进程将调用该函数。然后子进程将调用 func(10) 本身(另一个子进程将几乎同时对 func(1) 执行相同的操作)。