我必须用三个线程来进行一些事件模拟。
每次打勾,线程2& 3应检查它们是否清醒,如果它们是,则处理完成,否则,处理在其睡眠时间结束时开始。
我在我的代码中使用了某种形式的睡眠,但没有完全按照我的需要给出结果。
在每个刻度线上,我这样做:
def run(self):
while True:
task = Task().create()
self.numTasks += 1
task_wait_time = Random.poisson(<value read off a config>)
time.sleep(task_wait_time)
worker = Worker().create()
self.numWorkers += 1
worker_wait_time = Random.poisson(<different value read off a config>)
但是很明显,事情是不对的。任务等待,然后工人等待。 可以发生并行等待,或并行任务和工作者生成。
我确实读过有关线程模块的信息,但是还没有能够使用它完成所有3个工作。在网上的一些例子之后,我想出了一个不使用“tick”而另外两个的线程版本。我还没有测试它。
我不清楚如何做这项工作,请指导我。
答案 0 :(得分:0)
您需要将任务链接到工作人员。 为此,您可以使用队列,其方法为put和get。请参阅:https://docs.python.org/2/library/queue.html#module-Queue
或者使用事件对象及其方法设置并等待。看到: https://docs.python.org/2/library/threading.html#event-objects
此处缺少的部分是创建任务的“调度程序”与工作者之间的信息交换。