进程和线程的通信
通过进程和线程执行的函数没有返回值,不太明白队列是怎么来解决这个问题的呢?
我理解队列就是进程间/线程间消息的传递,好像和返回值没有关系
10
收起
正在回答
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、同学说的对,队列可以实现数据之间的通信,与返回值没有关系
祝学习愉快~
Python全能工程师
- 参与学习 人
- 提交作业 16421 份
- 解答问题 4469 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星