【问题标题】:python background processpython后台进程
【发布时间】:2016-01-29 21:20:06
【问题描述】:
我正在尝试用 Python 编写一个进程,它可以无限期地运行,并在后台产生恰好“n”个运行一些 python 代码的进程。我不关心这些后台进程的输出/结果,但想知道它们中的任何一个何时终止,以便我总是有“n”个进程在运行。有什么想法可以解决这个问题或一些可以提供帮助的参考资料吗?
感谢和问候,
阿齐姆
【问题讨论】:
标签:
python
python-2.7
multiprocessing
【解决方案1】:
我会使用multiprocessing.Pool 进行此类工作。您可以创建一个具有给定数量的工作进程的池,并将 python 函数分配给它们以运行。
from multiprocessing import Pool
import time
def f(x):
print(x)
time.sleep(1)
print("finished", x)
pool = Pool(processes=4)
for x in xrange(10):
pool.apply_async(f, [x])
pool.close()
pool.join()
返回以下内容:
0
1
2
3
('finished', 0)
('finished', 1)
('finished', 2)
('finished', 3)
4
5
6
7
('finished', 5)
('finished', 7)
('finished', 4)
('finished', 6)
8
9
('finished', 8)
('finished', 9)