【发布时间】:2013-08-10 00:09:25
【问题描述】:
我想使用子进程让 20 个编写脚本的实例并行运行。假设我有一个包含 100.000 个条目的大 URL 列表,我的程序应该控制我的脚本的 20 个实例一直在该列表上工作。我想将其编码如下:
urllist = [url1, url2, url3, .. , url100000]
i=0
while number_of_subproccesses < 20 and i<100000:
subprocess.Popen(['python', 'script.py', urllist[i]]
i = i+1
我的脚本只是将一些内容写入数据库或文本文件。它不输出任何内容,也不需要比 url 更多的输入。
我的问题是我无法找到如何获取活动子进程的数量。我是新手程序员,所以欢迎每一个提示和建议。我还想知道一旦加载了 20 个子进程以使 while 循环再次检查条件,我该如何管理它?我想可能会在它上面再放一个while循环,比如
while i<100000
while number_of_subproccesses < 20:
subprocess.Popen(['python', 'script.py', urllist[i]]
i = i+1
if number_of_subprocesses == 20:
sleep() # wait to some time until check again
或者,while 循环总是检查子进程的数量的可能性更大?
我也考虑过使用模块多处理,但我发现只调用带有子处理的 script.py 而不是带有多处理的函数真的很方便。
也许有人可以帮助我并引导我走向正确的方向。非常感谢!
【问题讨论】:
标签: python python-3.x parallel-processing subprocess multiprocessing