在Python中,是否有内置的语法可以让我向特定的Python线程发布消息?就像PyQt中的“queued connected signal”或Windows中的::PostMessage()一样。我需要这样做来实现程序部分之间的异步通信:有许多线程处理网络事件,它们需要将这些事件发布到一个单独的“逻辑”线程中,以安全的单线程方式转换事件。
队列(Queue)模块非常适用于你所描述的情况。
你可以设置一个队列,让所有线程共享。处理网络事件的线程可以使用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)