python - 使用多处理将函数的返回值分配给变量?关于 IDLE 的问题?

标签 python return-value multiprocessing

我正在尝试了解 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/

相关文章:

python - 如何计算 Django 连接表中的对象数量?

python - Flask request.args.get 没有获取所有参数(Python)

抽象基类和派生类的工厂函数的 C++ 返回类型

php - 从函数返回两个值

c++ - 为什么有些类方法返回 "*this"(自身的对象引用)?

python - Python 中的多重处理比没有时慢

python - 多处理池映射 : AttributeError: Can't pickle local object

python - 数据存储中的关系(一对多)

python - 在 python 中绘制 sklearn 集群

单核处理器与多核处理器上的多线程和多任务处理