Форум сайта python.su
Всех приветствую!
При порождении нескольких процессов, нужно чтобы каждый процесс мог завершать свою работу, не трогая другие процессы включая основной, похоже процесс не может убить сам себя при помощи self.terminate(), пришло в голову отправлять имя процесса через пайп главному процессу чтобы тот закрывал его:
from multiprocessing import Process, Pipe class Proc(Process): def __init__(self, client_msg): super(Proc, self).__init__() self.client_msg = client_msg def run(self): print("Run process %s" % (self.name)) self.quit() print("Test after quitting...") def quit(self): self.client_msg.send(self.name) (server_msg, client_msg) = Pipe() procs = {} for _ in range(5): p = Proc(client_msg) procs[p.name] = p p.start() while 1: msg = server_msg.recv() procs[msg].terminate()
Офлайн
А чем просто sys.exit() в дочерних процессах не устраивает?
Офлайн
PooHНе проверив это, стал какие-то костыли городить. В начале думал что sys.exit() убивает и главный процесс тоже а с ним и детей-процессы.
А чем просто sys.exit() в дочерних процессах не устраивает?
Отредактировано lobster (Сен. 20, 2015 17:13:27)
Офлайн