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.
我很感激帮助理解我在这里可能缺少的东西.
你写:
Process(target=func(10)).start()Run Code Online (Sandbox Code Playgroud)
这意味着Process给出func了never,给出了结果,func(10)因为Python 首先从左到右评估参数,然后将这些评估的结果传递给外部函数(这里是Process(..)调用).
为了让子进程评估函数,你应该写它:
Process(target=func,args=(10,)).start()Run Code Online (Sandbox Code Playgroud)
现在您传递对该func函数的引用,并提供一个参数元组,args子进程将使用该元组调用该函数.然后子进程将调用func(10)自身(并且另一个子进程几乎会同时执行相同的操作func(1)).
| 归档时间: |
|
| 查看次数: |
2651 次 |
| 最近记录: |