我正在用paho-mqtt在python中实现MQTT工作者。
是否所有的on_message()多线程都位于不同的线程中,因此,如果一项任务很耗时,仍然可以处理其他消息?
如果没有,该如何实现?
python客户端实际上并没有启动任何线程,这就是为什么您必须调用loop函数来处理网络事件的原因。
在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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句