【发布时间】:2016-06-03 16:26:24
【问题描述】:
我正在开展一个项目,该项目基本上需要我使用 ping 处理略低于 10,000 个 IP 地址。不幸的是,如果我尝试处理接近 2,000 个 IP 的某个地方,我正在一台 8gb 机器上运行并崩溃。以下是我的代码(大部分来自Fast ping sweep in python):
logs = open('addresses.txt', 'r').readlines()
pool = [ multiprocessing.Process(target=pinger, args=(jobs,results)) for log in logs ]
for p in pool:
p.start()
for i in logs:
jobs.put(i)
for p in pool:
jobs.put(None)
for p in pool:
p.join()
我对多处理非常陌生,但我想知道是否有某种方法我仍然可以使用它,但可以为一小部分日志分配作业,以便以时间为代价来挽救内存,这样当作业完成时,它们可以重新分配给未处理的日志。抱歉,如果不清楚 - 再次,这是新的。
【问题讨论】:
-
hmmm... 尝试限制同时运行的进程数可能吗? ;)
-
@alfasin 我明白从概念上讲这就是我必须做的。我不明白该怎么做以及如何确保相应地重新分配流程。老实说,我仍然试图将多处理作为一个整体来解决
标签: python-2.7 python-multiprocessing