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字符串加密解密的三种方法分享(base64 win32com)
Jan 19 Python
python批量修改文件名的实现代码
Sep 01 Python
Python兔子毒药问题实例分析
Mar 05 Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 Python
使用Python横向合并excel文件的实例
Dec 11 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
python通过实例讲解反射机制
Oct 17 Python
pip install 使用国内镜像的方法示例
Apr 03 Python
Python tkinter实现简单加法计算器代码实例
May 13 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
对Pytorch 中的contiguous理解说明
Mar 03 Python
python 实现mysql自动增删分区的方法
Apr 01 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制作静态网站的模板框架
2006/10/09 PHP
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
python 生成目录树及显示文件大小的代码
2009/07/23 Python
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
Python合并多个装饰器小技巧
2015/04/28 Python
Python批量按比例缩小图片脚本分享
2015/05/21 Python
Python fileinput模块使用实例
2015/06/03 Python
python实现图片批量压缩程序
2018/07/23 Python
详解python3中的真值测试
2018/08/13 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
Python生成器常见问题及解决方案
2020/03/21 Python
大码女装:Ulla Popken
2019/08/06 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
《我的第一本书》教学反思
2014/02/15 职场文书
根叔历年演讲稿
2014/05/20 职场文书
五四演讲稿范文
2014/09/03 职场文书
前台接待员岗位职责
2015/04/15 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers