我使用python3.6同步多线程。我有一个“主线程”,它为所有其他线程提供工作。当一个工作线程完成工作时,它会向主线程发出信号,让它完成更多的工作
为了实现这一点,主线程正在等待一个(或多个)线程完成,然后再收集要处理的新数据
while True:
while freeWorkers > 0:
# Give the worker more work...
time.sleep(5) # wait for 5 seconds before checking if we got free workers.
基本上,它起作用了。我想以这种方式升级它:在一个工作线程完成它的工作之后,它向“主”线程报告一些方法。因为主线程非常快,在大多数情况下,主线程将处于休眠状态。。。我想让他停止睡觉,什么会触发给自由工作者更多的工作
在C#中,我是这样做的: 处理同步的对象
public object SyncingClock { get; private set; } = new object();
以这种方式进入睡眠:
lock (SyncingClock)
Monitor.Wait(SyncingClock, 5000);
工作线程报告完成方式:
lock (SyncingClock)
Monitor.Pulse(SyncingClock);
所以,我正在寻找一种在Python(或任何其他替代方法)中执行这个C#技巧的方法
谢谢
这是用
Condition
对象完成的对于等待超时或脉冲,请执行以下操作:
通知:
我认为您应该看看事件驱动编程(https://emptypage.jp/notes/pyevent.en.html)
并且没有针对完工工人的while循环轮询:
例如:
当在mainhthread中调用
work_finished
方法时,可以为线程分配新的工作相关问题 更多 >
编程相关推荐