Python多处理:进程无法启动

Bob*_*Bob 1 python process multiprocessing

我是multiprocessingPython的新手(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()
Run Code Online (Sandbox Code Playgroud)

这返回的东西是:

start 10
end 10
start 1
end 1
Run Code Online (Sandbox Code Playgroud)

虽然start 1并且end 1应该先于先前出现end 10.

我很感激帮助理解我在这里可能缺少的东西.

Wil*_*sem 6

你写:

Process(target=func(10)).start()
Run Code Online (Sandbox Code Playgroud)

这意味着Process给出funcnever,给出了结果,func(10)因为Python 首先从左到右评估参数,然后将这些评估的结果传递给外部函数(这里是Process(..)调用).

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

Process(target=func,args=(10,)).start()
Run Code Online (Sandbox Code Playgroud)

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