我对我当前的线程设计有疑问 - 我的当前进程产生一个新线程并继续主线程直到终止条件。该进程等待所有线程完成后再终止。我遇到的问题是每个生成的新线程都需要查看生成的上一个线程是否已完成。我应该只设置一个队列并只使用一个线程来处理所有任务吗?或者是否有可能产生一个线程,以某种方式检查前一个线程是否已完成并仅在该线程完成后处理该任务?
感谢您的帮助
答案 0 :(得分:4)
如果除了初始“main”线程之外的所有线程都应该按顺序运行,那么是的,你应该使用一个任务队列和一个工作线程。
Queue
可以帮助解决此问题(如果需要等待所有排队的任务完成,则允许主线程.join()
)。
答案 1 :(得分:0)
请看Gevent 您可以为多个任务创建多个Greenlet对象 每个greenlet都是green thread。
from gevent import monkey monkey.patch_all() import gevent from gevent import Greenlet class Task(Greenlet): def __init__(self, name): Greenlet.__init__(self) self.name = name def _run(self): print "Task %s: some task..." % self.name t1 = Task("task1") t2 = Task("task2") t1.start() t2.start() # here we are waiting all tasks gevent.joinall([t1,t2])