我正在处理Python脚本,我需要一些帮助。这个脚本运行得很好并且给了我需要的结果,但脚本没有退出,因为p进程仍然在运行。我怎么能纠正这个?
让我说在函数run_up中,这需要一个while循环。这是我实际尝试做的简化版本,for循环不适用于我需要的东西。
from multiprocessing import Process, Pipe
def run_up(conn):
i = 0
while True:
conn.send(i)
i += 1
conn.close()
def div_check():
while True:
v = parent_conn.recv()
if v > 95:
break
elif v % 5 == 0:
print '%i is divisible by 5' % v
if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target=run_up, args=(child_conn,))
p.start()
div_check()
p.join()
答案 0 :(得分:0)
您可以使用Event。因此,您可以while not event.is_set()
代替while True
。在另一个过程中,当您需要关闭它时,请event.set()
。
答案 1 :(得分:0)
您的函数run_up
具有无限循环。这意味着子进程永远不会终止,因此您将永久阻止join
。
如果您知道何时终止它,那将解决您的问题。否则,您可能需要在@ user3267581的答案中执行某些操作,以便在进程之间进行通信。