需求
2个采集线程, 1个展示线程, 这个展示线程如何接收2个采集线程的数据,分开存储,分开显示
如何实现用 pubsub 接收多个线程的数据?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 陈年椰子 2022-03-31 11:11关注
给个示范代码, 采集线程 1秒发一次数据, 展示线程 10秒展示一次数据。
from threading import Thread from time import sleep from random import randint from pubsub import pub import time import pymysql class Thread1(Thread): def __init__(self): """Init Worker Thread Class.""" Thread.__init__(self) print('采集线程1 Start ') def run(self): """Run Worker Thread.""" i = 0 while True: i += 1 pub.sendMessage('setval', status_val=['t1',randint(1,100)]) sleep(1) class Thread2(Thread): def __init__(self): """Init Worker Thread Class.""" Thread.__init__(self) print('采集线程1 Start ') def run(self): """Run Worker Thread.""" i = 0 while True: i += 1 pub.sendMessage('setval', status_val=['t2',randint(200,500)]) sleep(1) class Thread_fx(Thread): def __init__(self): Thread.__init__(self) print('分析线程 Start ') self.data = [] self.data_dict = {} self.data_stand_dict = {} self.stand = 0 pub.subscribe(self.change_status, 'setval') def change_status(self, status_val): item = status_val if item[0] in self.data_dict: temp = self.data_dict[item[0]] temp.append(item[1]) else: self.data_dict[item[0]] = [item[1]] self.data.append(status_val) def run(self): while True: for k,v in self.data_dict.items(): print("线程",k,"有{}条数据,最后一条:".format(len(v)),v[-1]) sleep(10) def test(): print('start test') t1 = Thread1() t1.start() t2 = Thread2() t2.start() fx = Thread_fx() fx.start() if __name__ == '__main__': test()
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存
- ¥15 CST保存项目时失败
- ¥15 树莓派5怎么用camera module 3啊
- ¥20 java在应用程序里获取不到扬声器设备
- ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
- ¥15 Attention is all you need 的代码运行