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 3中实现类型检查器的简单方法
Jul 03 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
python3 拼接字符串的7种方法
Sep 12 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
pygame游戏之旅 载入小车图片、更新窗口
Nov 20 Python
wxpython绘制音频效果
Nov 18 Python
python实现的Iou与Giou代码
Jan 18 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 Python
Python通过yagmail实现发送邮件代码解析
Oct 27 Python
python - asyncio异步编程
Apr 06 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
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
JS小框架 fly javascript framework
2009/11/26 Javascript
jquery.validate使用攻略 第三部
2010/07/01 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
Python实现一个简单的MySQL类
2015/01/07 Python
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
浅谈python之新式类
2018/08/12 Python
AUC计算方法与Python实现代码
2020/02/28 Python
python中可以声明变量类型吗
2020/06/18 Python
如何用python写个模板引擎
2021/01/14 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
应届生的求职推荐信范文
2013/11/30 职场文书
4s店机修工岗位职责
2013/12/20 职场文书
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
党员公开承诺事项
2014/03/25 职场文书
项目建议书怎么写
2014/05/15 职场文书
监督检查工作方案
2014/05/28 职场文书
团队口号大全
2014/06/06 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang
Python基础之进程详解
2021/05/21 Python
MySQL 5.7常见数据类型
2021/07/15 MySQL