进程和线程的通信

进程和线程的通信

通过进程和线程执行的函数没有返回值,不太明白队列是怎么来解决这个问题的呢?

我理解队列就是进程间/线程间消息的传递,好像和返回值没有关系

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!
1、同学可以参考下使用队列实现进程之间数据通信的代码,如下:

import multiprocessing
from multiprocessing import Queue


class Test():
    def __init__(self):
        self.name = '123'
    # 修改属性函数
    def get_attr(self, name, que):
        self.name = name
        que.put(self.name)  # 向队列中放入数据

if __name__ == "__main__":
    que = Queue()  # 创建队列
    test = Test()  # new一个类对象
    # 创建一个进程
    process = multiprocessing.Process(target=test.get_attr, args=('name值变为了456', que))
    # 开启进程
    process.start()
    print(test.name)  # 进程下无法访问修改后的name值
    print(que.get())  # 使用队列的方式成功访问修改后的name值

    process2 = multiprocessing.Process(target=test.get_attr, args=('name值变为了789', que))
    process2.start()
    print(que.get())

2、同学说的对,队列可以实现数据之间的通信,与返回值没有关系
祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师