我需要它来打开10个进程,每次完成其中一个进程我想等几秒钟再开始另一个进程。 这似乎很简单,但不知怎的,我无法让它发挥作用。
答案 0 :(得分:2)
我不是100%清楚你想要完成什么,但是你看过multiprocessing
模块,特别是using a pool of workers吗?
答案 1 :(得分:1)
我使用信号量处理网络统计数据也是如此。实质上,当创建进程时,信号量会递增。当他们退出时,它会减少。当信号量阻塞时,阻止创建过程。
这实际上会触发线程,这会使执行路径中的外部进程运行一点。
这是一个例子。
thread_sem = threading.Semaphore(int(cfg.maxthreads))
for k,v in log_data.items():
thread_list.append(ProcessorThread(int(k), v, thread_sem))
thread_list[-1].start()
然后在ProcessorThread的构造函数中,我这样做:
def __init__(self, siteid, data, lock_object):
threading.Thread.__init__(self)
self.setDaemon(False)
self.lock_object = lock_object
self.data = data
self.siteid = siteid
self.lock_object.acquire()
当线程完成任务时(无论是否成功),lock_object
被释放,允许另一个进程开始。
HTH