如何安排一对不同的功能,以便真正并行运行?



我想并行执行两个函数,并想验证它们是否并行运行。 在这里,我并行运行 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)

在不评估可调用对象的情况下交出可调用对象。

相关内容

  • 没有找到相关文章

最新更新