python 多进程队列数据处理详解


Posted in Python onDecember 23, 2019

我就废话不多说了,直接上代码吧!

# -*- coding:utf8 -*-
import paho.mqtt.client as mqtt
from multiprocessing import Process, Queue
import time, random, os
import camera_person_num
 
MQTTHOST = "172.19.4.4"
MQTTPORT = 1883
mqttClient = mqtt.Client()
q = Queue() 
 
 
# 连接MQTT服务器
def on_mqtt_connect():
  mqttClient.connect(MQTTHOST, MQTTPORT, 60)
  mqttClient.loop_start()
 
 
# 消息处理函数
def on_message_come(lient, userdata, msg):
  # print(msg.topic + ":" + str(msg.payload.decode("utf-8")))
  
  q.put(msg.payload.decode("utf-8")) # 放入队列
  print("产生消息", msg.payload.decode("utf-8"))
  # 消息处理开启多进程
  # p = Process(target=talk, args=("/camera/person/num/result", msg.payload.decode("utf-8")))
  # p.start()
 
 
def consumer(q, pid):
  print("开启消费序列进程", pid)
  while True:
    msg = q.get()
    # p = Process(target=talk, args=("/camera/person/num/result", msg, pid))
    # p.start()
    talk("/camera/person/num/result", msg, pid) 
 
 
# subscribe 消息订阅
def on_subscribe():
  mqttClient.subscribe("test123", 1) # 主题为"test"
  mqttClient.on_message = on_message_come # 消息到来处理函数
 
 
# publish 消息发布
def on_publish(topic, msg, qos):
  mqttClient.publish(topic, msg, qos);
 
 
# 多进程中发布消息需要重新初始化mqttClient
def talk(topic, msg, pid):
  cameraPsersonNum = camera_person_num.CameraPsersonNum(msg)
  t_max, t_mean, t_min = cameraPsersonNum.personNum()
  # time.sleep(20)
  print("消费消息", pid, msg) 
  mqttClient2 = mqtt.Client()
  mqttClient2.connect(MQTTHOST, MQTTPORT, 60)
  mqttClient2.loop_start()
  mqttClient2.publish(topic, '{"max":' + str(t_max) + ',"mean":' + str(t_mean) + ',"min:"' + t_min + '}', 1)
  mqttClient2.disconnect()
 
 
def main():
  
  on_mqtt_connect()
  on_subscribe()
  for i in range(1, 3):
    c1 = Process(target=consumer, args=(q, i))
    c1.start()
  while True:
    pass
 
 
if __name__ == '__main__':
  main()

以上这篇python 多进程队列数据处理详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中的代码编码格式转换问题
Jun 10 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 Python
Python导入模块时遇到的错误分析
Aug 30 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
Mar 05 Python
解决pyinstaller打包pyqt5的问题
Jan 08 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
Python类和实例的属性机制原理详解
Mar 21 Python
python实现将range()函数生成的数字存储在一个列表中
Apr 02 Python
利用Python实现Excel的文件间的数据匹配功能
Jun 16 Python
Python3爬虫RedisDump的安装步骤
Feb 20 Python
python控制台打印log输出重复的解决方法
May 14 Python
Pytorch数据读取之Dataset和DataLoader知识总结
May 23 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 #Python
python读取ini配置文件过程示范
Dec 23 #Python
python读取Kafka实例
Dec 23 #Python
Python3 使用selenium插件爬取苏宁商家联系电话
Dec 23 #Python
kafka监控获取指定topic的消息总量示例
Dec 23 #Python
kafka-python 获取topic lag值方式
Dec 23 #Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 #Python
You might like
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
python encode和decode的妙用
2009/09/02 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
Python基于whois模块简单识别网站域名及所有者的方法
2018/04/23 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
python实现连连看游戏
2020/02/14 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
在职人员函授期间自我评价分享
2013/11/08 职场文书
人力资源主管职责范本
2014/03/05 职场文书
员工加薪申请报告
2015/05/15 职场文书
辞职离别感言
2015/08/04 职场文书
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android