我是新来的multiprocessing
在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
While start 1
and end 1
先验应该出现在end 10
.
我希望能帮助您了解我在这里可能缺少的内容。
你写:
Process(target=func(10)).start()
这意味着Process
从未被给予func
,给定的结果func(10)
自从Pythonfirst从左到右计算参数,然后将这些计算的结果传递给外部函数(这里是Process(..)
call).
为了让子进程评估函数,你应该这样写:
Process(target=func,args=(10,)).start()
现在你通过一个参考func
功能,并且您提供参数元组args
子进程将用它来调用该函数。然后子进程将调用func(10)
本身(另一个子进程将almost同时做同样的事情func(1)
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)