Khi sử dụng python-daemon, tôi là tạo subprocesses likeso:Python-daemon không giết chết những đứa trẻ của mình
import multiprocessing
class Worker(multiprocessing.Process):
def __init__(self, queue):
self.queue = queue # we wait for things from this in Worker.run()
...
q = multiprocessing.Queue()
with daemon.DaemonContext():
for i in xrange(3):
Worker(q)
while True: # let the Workers do their thing
q.put(_something_we_wait_for())
Khi tôi giết phụ huynh quá trình ma quỉ (tức là không phải là một người lao động) với một tổ hợp phím Ctrl-C hoặc SIGTERM , vv, các em không chết. Làm thế nào để giết bọn trẻ?
Suy nghĩ đầu tiên của tôi là sử dụng atexit để giết tất cả những người lao động, likeso:
with daemon.DaemonContext():
workers = list()
for i in xrange(3):
workers.append(Worker(q))
@atexit.register
def kill_the_children():
for w in workers:
w.terminate()
while True: # let the Workers do their thing
q.put(_something_we_wait_for())
Tuy nhiên, những đứa trẻ của daemon là điều khó khăn để xử lý, và tôi muốn có nghĩa vụ cho những suy nghĩ và đầu vào như thế nào điều này nên được thực hiện.
Cảm ơn bạn.
Giết trẻ em của bạn có vẻ giống như một điều "daemonic" để làm ... – ewall
Chắc chắn. Daemon này là * không * lên đến spec. –
Đây có phải là Python không?Bạn không thể chỉ làm 'từ infanticide' ác nhập khẩu hoặc một cái gì đó? – Syntactic