gpt4 book ai didi

python - 如何安排一对不同的函数以便真正并行运行?

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:00 25 4
gpt4 key购买 nike

我想并行执行两个函数,并想验证它们是否并行运行。这里我并行运行两个函数,但得到的输出是不同的。理想情况下,他们应该同时完成

我使用的是 Windows 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)

它在不评估可调用对象的情况下传递可调用对象。

关于python - 如何安排一对不同的函数以便真正并行运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56920004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com