我在寫一個以並行方式執行函數的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()
我不知道我怎麼能得到的sqr
和cube
函數的返回值。
我已經試過這樣:
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()
這一計劃將暫停無限長的時間。我不明白這裏發生了什麼問題? 有人可以幫我,我該如何存儲函數的返回結果?任何幫助,將不勝感激。
你使用Python2還是3? –
我正在使用python 3 – Amit
你在什麼操作系統上? – roganjosh