# -*- 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 多进程队列数据处理的更多相关文章

  1. Python多进程队列间传递对象

    前言 在python 需要在队列中传递对象, 会出现进程不能正常退出的情况. 其原因是因为 在父进程 向子进程传入的Queue对象不对, Queue对象正常是子进程之间的信息传递, 而当我在父进程 创 ...

  2. python 并发编程 多进程 队列目录

    python 并发编程 多进程 队列 python 并发编程 多进程 生产者消费者模型介绍 python 并发编程 多进程 生产者消费者模型总结 python 并发编程 多进程 JoinableQue ...

  3. Python多进程编程

    转自:Python多进程编程 阅读目录 1. Process 2. Lock 3. Semaphore 4. Event 5. Queue 6. Pipe 7. Pool 序. multiproces ...

  4. Python多进程multiprocessing使用示例

    mutilprocess简介 像线程一样管理进程,这个是mutilprocess的核心,他与threading很是相像,对多核CPU的利用率会比threading好的多. import multipr ...

  5. python 多进程开发与多线程开发

    转自: http://tchuairen.blog.51cto.com/3848118/1720965 博文作者参考的博文:  博文1  博文2 我们先来了解什么是进程? 程序并不能单独运行,只有将程 ...

  6. day-4 python多进程编程知识点汇总

    1. python多进程简介 由于Python设计的限制(我说的是咱们常用的CPython).最多只能用满1个CPU核心.Python提供了非常好用的多进程包multiprocessing,他提供了一 ...

  7. 【转】Python多进程编程

    [转]Python多进程编程 序. multiprocessingpython中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Pytho ...

  8. Python 多进程multiprocessing

    一.python多线程其实在底层来说只是单线程,因此python多线程也称为假线程,之所以用多线程的意义是因为线程不停的切换这样比串行还是要快很多.python多线程中只要涉及到io或者sleep就会 ...

  9. Python 多进程编程之 进程间的通信(在Pool中Queue)

    Python 多进程编程之 进程间的通信(在Pool中Queue) 1,在进程池中进程间的通信,原理与普通进程之间一样,只是引用的方法不同,python对进程池通信有专用的方法 在Manager()中 ...

随机推荐

  1. FTP客户端遇到150连接超时错误的处理办法

    环境:阿里云ECS,win server 2012 R2 / FTP Server(FileZilla 0.9.41) 问题描述:账号连接正常,但无法列出目录,提示150连接超时. 解决过程: 1.关 ...

  2. sass-RGB颜色函数-RGBA()函数

    rgba() 函数主要用来将一个颜色根据透明度转换成 rgba 颜色. 其语法有两种格式: rgba($red,$green,$blue,$alpha) //将一个rgba颜色转译出来,和未转译的值一 ...

  3. Python格式输出汇总

    print ('%10s'%('test')) print ('{:<10}'.format('test'))#left-aligned print ('{:>10}'.format('t ...

  4. 第二周作业—N42-虚怀若谷

    一.描述Linux发行版的系统目录名称命名规则以及用途 1.文件名命名规则 (1).文件名最长255字节 (2).包括路径在内的文件名称最长4095个字节 (3).除了斜扛和NUL,所有字符都有效.但 ...

  5. Debug模式自定义NSlog

    #ifdef DEBUG # define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号 ...

  6. zabbix(一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案)

    zabbix 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决 ...

  7. BZOJ 4484: [Jsoi2015]最小表示(拓扑排序+bitset)

    传送门 解题思路 \(bitset\)维护连通性,给每个点开个\(bitset\),第\(i\)位为\(1\)则表示与第\(i\)位联通.算答案时显然要枚举每条边,而枚举边的顺序需要贪心,一个点先到达 ...

  8. ansible控制winserver笔记

    原文地址: https://www.cnblogs.com/kingleft/p/6391652.html 环境描述: ansible控制远程windows .系统必须是sp1 .安装framewor ...

  9. 韩老师CCNA学习笔记

    1.MSCONFIG服务里面可以选择隐藏Windows服务,就能看出程序安装的服务.即使显示已停止,仍可能在运行 2.命令行输入netstat -anbo ,显示当前连接和端口,数字显示,以及程序的路 ...

  10. codeforces 111A/112C Petya and Inequiations

    题目:Petya and Inequiations传送门: http://codeforces.com/problemset/problem/111/A http://codeforces.com/p ...