我正在運行一個啓動子進程以通過rsync執行備份的備份腳本。不過,我無法限制它一次啓動的rsyncs數量。限制一次從python腳本運行的進程數
這裏是我目前工作的代碼:
print "active_children: ", multiprocessing.active_children()
print "active_children len: ", len(multiprocessing.active_children())
while len(multiprocessing.active_children()) > 49:
sleep(2)
p = multiprocessing.Process(target=do_backup, args=(shash["NAME"],ip,shash["buTYPE"],))
jobs.append(p)
p.start()
這正顯示出最多一個孩子時,我有上百個運行rsyncs的。以下是實際啓動rsync的代碼(來自do_backup函數內部)。命令是含rsync的行一個變量:
print command
subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
return 1
如果我添加一個睡眠(x)與do_backup功能會顯示爲一個活躍的孩子,而它正在睡覺。此外,進程表顯示rsync進程的PPID爲1.我假設,rsync分裂並且不再是python的子代,它允許我的子進程死掉,所以我不能再計算它了。有誰知道如何保持python小孩活着,並計數,直到rsync完成?
有喲使用進程池考慮? – moooeeeep 2014-10-28 13:53:43