我想并行执行两个函数,并想验证它们是否并行运行。 在这里,我并行运行 2 个函数,但我得到的输出不同。 理想情况下,它们应该同时完成
我使用的是视窗 10 操作系统,因此无法使用 Ray。甚至不能使用游泳池,因为我使用的功能会有所不同
法典:
import datetime
from multiprocessing import Process
import os
import datetime
def info(title):
print(title)
print('module name:', __name__)
print('parent process:', os.getppid())
print('process id:', os.getpid())
def f(name):
info('function f')
print('hello', name)
def func1():
for i in range(1):
print('function 1 running')
for j in range(10000):
for k in range(10000):
a=1
print(datetime.datetime.now())
return
def func2():
for i in range(1):
print('function 2 running')
for j in range(10000):
for k in range(10000):
a=1
print(datetime.datetime.now())
return
if __name__ == '__main__':
info('main line')
p1 = Process(target=func1())
p1.start()
p2 = Process(target=func2())
p2.start()
输出:
main line
module name: __main__
parent process: 17284
process id: 2372
function 1 running
2019-07-07 12:00:44.512577
function 2 running
2019-07-07 12:00:50.100357
预期输出:
function 1 running
function 2 running
2019-07-07 12:00:44.512577
2019-07-07 12:00:44.512577
你写的
p1 = Process(target=func1())
p1.start()
p2 = Process(target=func2())
p2.start()
在当前进程中(按顺序)评估这两个函数, 并将None
结果作为target
参数。
相反,你想要执行
p1 = Process(target=func1)
...
p2 = Process(target=func2)
在不评估可调用对象的情况下交出可调用对象。