如何在python中实现master / watchdog脚本?

时间:2010-03-17 18:09:49

标签: python subprocess watchdog

我需要它来打开10个进程,每次完成其中一个进程我想等几秒钟再开始另一个进程。 这似乎很简单,但不知怎的,我无法让它发挥作用。

2 个答案:

答案 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