我想使用子进程让 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 而不是带有多处理的函数真的很方便。
也许有人可以帮助我并引导我走向正确的方向。多谢!