python异步线程/进程
问题描述:
我不得不想出三个线程的事件模拟。python异步线程/进程
- 该线程以规则的间隔(它没有其它功能)
- 该线程生成“任务”(我用来描述一组的功能的抽象)生成“蜱”。任务生成速率由分配指导
- 该线程生成“工作人员”(他们选择由2生成的任务并执行一些处理)。工人生成率是由不同的分配
在每个刻度为导向,线程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件事情。在线上的一些例子,我想出了一个线程版本,它不使用“嘀嗒”而是其他两个。我还没有测试它。
我不清楚如何使这项工作,请亲引导我。
答
您需要将任务链接到工作人员。 要做到这一点,您可以使用一个队列,并将其方法放入并获取。请参阅:https://docs.python.org/2/library/queue.html#module-Queue
或者使用事件对象及其方法设置并等待。参见: https://docs.python.org/2/library/threading.html#event-objects
这里缺少的部分是创建任务的“调度程序”与工作人员之间的信息交换。