我不确定最好的方式来问这个(因此这个糟糕的标题)。在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()
内的循环? (或者如何写出同样的效果?)
答案 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
删除流程的逻辑。