python:等待多个对象(队列,锁,条件等)

时间:2014-03-31 19:22:52

标签: python concurrency

我正在使用Python threading库。工作正常(当然,以Global Interpreter Lock为准)。

现在我有一个机会。我有两个独立的并发源:两个Queue,或一个队列和一个Condition我如何等待第一个准备就绪?(它们必须是单独的对象,因为它们归应用程序的不同模块部分所有。)

Windows具有WaitForMultipleObjects功能;是否有类似的Python并发原语?

2 个答案:

答案 0 :(得分:0)

我所知道的没有已经存在的功能。但是有一些threading.enumaerate()我认为可能会返回所有当前守护程序线程的列表,无论源是什么。获得该列表后,您可以迭代它以查找所需的条件。要将线程设置为守护进程,每个线程都有一个方法,可以在线程启动之前调用thread.setDaemon(True)。

我无法肯定地说这是你的答案。我没有经验,显然你没有,但我在一本书中看到了这一点,通过示例的Python标准库 - Doug Hellmann。他在关于线程的部分中有23页用于管理并发操作,并且枚举是一个有用的东西。

答案 1 :(得分:0)

您可以创建一个新的同步对象(队列,条件等),让它称之为ready_event,并为您要监视的每个同步对象设置一个Thread。每个线程等待其同步对象准备就绪,当线程的同步对象准备就绪时,线程通过ready_event发出信号。在创建并启动线程之后,您可以等待ready_event。