我使用一个队列在进程之间进行通信,同时也使用一个事件标志来指示父进程是否要退出,但是子进程中的队列处于阻塞状态,等待更多输入。在
我可以通过使用get\u nowait()使队列不阻塞,但是这会使处理器使用100%
关闭子进程并同时接受输入的推荐方法是什么?在
from multiprocessing import Process
from multiprocessing import Event
from multiprocessing import Queue
class EchoProcess(Process):
def __init__(self, iQ, closeEvent):
Process.__init__(self)
self.iQ = iQ
self.closeEvent = closeEvent
def run(self):
while not self.closeEvent.is_set():
istring = self.iQ.get()
print(istring)
print("exited")
if __name__ == "__main__":
iQ = Queue()
closeEvent = Event()
echoProcess = EchoProcess(iQ, closeEvent)
echoProcess.start()
while True:
istring = raw_input("Enter:")
if istring == "quit": break
iQ.put(istring)
closeEvent.set()
你可以用哨兵。在
将sentinel定义为一个从未出现在正常数据中的值,当EchoProcess获得它时,它将退出。在
例如:
相关问题 更多 >
编程相关推荐