调用不同的方法后返回Thread方法

时间:2012-01-19 02:38:53

标签: python multithreading object

我不确定最好的方式来问这个(因此这个糟糕的标题)。在run()子类的threading.Thread方法中,我有一个inf循环,在运行不同的方法后也需要返回。这是如何完成的?这是我到目前为止(在同一个RLock()实例中plist对象周围需要Thread吗?)

class pMonitor(Thread):
    def __init__(self):
        Thread.__init__(self)
        self.daemon = True
        self.plist = []

    def run(self):
        while True:
            for p in self.plist:
                if not p.isRunning():
                    p.run()
            time.sleep(1)

    def addproc(self, cmdline):
        self.plist.append(Proc(cmdline))

调用addproc时,如何返回run()内的循环? (或者如何写出同样的效果?)

1 个答案:

答案 0 :(得分:1)

您可以使用Queue.Queue

def runproc(queue):
    plist = []
    while True:
        try: cmdline = queue.get_nowait()
        except Empty: pass
        else: plist.append(Proc(cmdline))

        for p in plist:
            if not p.isRunning():
               p.run()
        time.sleep(1)

queue = Queue()            
t = Thread(target=runproc, args=(queue,))
t.daemon = True
t.start()

queue.put(cmdline)
# ...

您需要添加从plist删除流程的逻辑。