python中是否有任何内置语法允许我在我的问题中向特定的python线程发布消息?就像在Windows中的pyQt或:: PostMessage()中的“排队连接信号”一样。我需要这个用于程序部分之间的异步通信:有许多线程处理网络事件,他们需要将这些事件发布到单个“逻辑”线程,该线程可以安全地转换事件的单线程方式。
答案 0 :(得分:10)
Queue模块是python,非常适合你所描述的内容。
您可以设置一个在所有线程之间共享的队列。处理网络事件的线程可以使用queue.put将事件发布到队列中。逻辑线程将使用queue.get从队列中检索事件。
import Queue
# maxsize of 0 means that we can put an unlimited number of events
# on the queue
q = Queue.Queue(maxsize=0)
def network_thread():
while True:
e = get_network_event()
q.put(e)
def logic_thread():
while True:
# This will wait until there are events to process
e = q.get()
process_event(e)
答案 1 :(得分:1)