我正在编写一个Python程序,以并行方式执行函数。以下是代码:
我正在编写一个Python程序,以并行方式执行函数。以下是代码:
from multiprocessing import Process
def sqr(args):
results = []
for i in args:
results.append(i*i)
return results
def cube(args):
results = []
for i in args:
results.append(i*i*i)
return results
def main():
data = [1,2,3,4,5]
p1 = Process(target=sqr, args=(data,))
p1.start()
p2 = Process(target=cube, args=(data,))
p2.start()
p1.join()
p2.join()
main()
我不知道如何获取和函数的返回值。
我尝试过这样做:
from multiprocessing import Process
from queue import Queue
def sqr(args, q):
results = []
for i in args:
results.append(i*i)
q.put(results)
def cube(args, q):
results = []
for i in args:
results.append(i*i*i)
q.put(results)
def main():
q = Queue()
data = [1,2,3,4,5]
p1 = Process(target=sqr, args=(data, q))
p1.start()
p2 = Process(target=cube, args=(data, q))
p2.start()
p1.join()
p2.join()
print(q.get())
main()
这个程序将会无限期地挂起。我不明白出了什么问题? 有人可以帮帮我吗,如何储存函数的返回结果?非常感谢。
multiprocessing.Queue
。queue.Queue
适用于多线程。现在,由于其他 进程 正在写入其自己的队列副本,因此原始进程将无限期地等待q.get()
中的数据。 - Ilja Everilämultiprocessing.Queue
进行测试,原始代码运行良好。@Amit 你所说的 Ubuntu 操作系统是指真正的 Linux,还是 Windows 10 的 Bash for plah plah? - Ilja Everilä