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关键字and和or用法实例
May 28 Python
python获取外网ip地址的方法总结
Jul 02 Python
Django1.7+python 2.78+pycharm配置mysql数据库
Oct 09 Python
python+pyqt实现右下角弹出框
Oct 26 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 Python
新手学python应该下哪个版本
Jun 11 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 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读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
jquery cookie插件代码类
2009/05/26 Javascript
javascript json2 使用方法
2010/03/16 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
理解Javascript_05_原型继承原理
2010/10/13 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
Vue点击切换颜色的方法
2018/09/13 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
python 获取图片分辨率的方法
2019/01/08 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
is_file和file_exists效率比较
2021/03/14 PHP
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
印度低票价航空公司:GoAir
2017/10/11 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
个人校本研修方案
2014/05/26 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
Vue2.0搭建脚手架
2022/03/13 Vue.js
Rust中的Struct使用示例详解
2022/08/14 Javascript