我正在尝试了解 python 中的多处理。
from multiprocessing import Process
def multiply(a,b):
print(a*b)
return a*b
if __name__ == '__main__':
p = Process(target= multiply, args= (5,4))
p.start()
p.join()
print("ok.")
例如,在此代码块中,如果有一个名为“result”的变量。我们如何将 multiply 函数的返回值赋给“result”?
关于 IDLE 的一个小问题:当我试图用 Python Shell 运行这个示例时,它不能正常工作?如果我双击 .py 文件,输出是这样的:
20
ok.
但是如果我尝试在 IDLE 中运行它:
ok.
谢谢...
最佳答案
好的,我以某种方式解决了这个问题。我查看了 python 文档,了解到:通过使用 Queue
类,我们可以从函数中获取返回值。我的代码的最终版本是这样的:
from multiprocessing import Process, Queue
def multiply(a,b,que): #add a argument to function for assigning a queue
que.put(a*b) #we're putting return value into queue
if __name__ == '__main__':
queue1 = Queue() #create a queue object
p = Process(target= multiply, args= (5,4,queue1)) #we're setting 3rd argument to queue1
p.start()
print(queue1.get()) #and we're getting return value: 20
p.join()
print("ok.")
还有一个pipe()
函数,我想我们也可以使用pipe()
函数。但是 Queue
现在对我有用。
关于python - 使用多处理将函数的返回值分配给变量?关于 IDLE 的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194884/