我正在使用paho-mqtt在python中实现一个MQTT worker。
所有on_message()是否都在不同的线程中进行多线程处理,因此如果其中一个任务耗时,其他消息仍然可以处理?
如果没有,如何实现这种行为?
答案 0 :(得分:3)
python客户端实际上并不启动任何线程,这就是为什么你必须调用循环函数来处理网络事件。
在Java中,您将使用onMessage回调将传入消息放入一个单独的线程池将处理的本地队列。
Python没有本机线程支持,但确实支持产生进程以像线程一样运行。可以在此处找到多处理的详细信息:
<击> https://docs.python.org/2.7/library/multiprocessing.html 击>
编辑: 仔细观察paho python代码,它似乎可以实际启动一个新线程(使用loop_start()函数)来处理以前需要循环函数的事物的网络端。这并没有改变在这个线程上发生对on_message回调的所有调用的事实。如果你需要在这个回调中做大量的工作,你肯定应该看一下新的线程池来完成这项工作。
http://www.tutorialspoint.com/python/python_multithreading.htm