You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中统计当前运行的多进程数量并维持25个进程运行?

保持最多25个并行进程运行的解决方案

我懂你的需求——要让脚本持续维持最多25个load进程在运行,而不是只启动10个就停。当前代码的问题在于它只是固定循环10次启动进程,没有后续的监控和补充逻辑。

这里是修改后的代码,完美实现了你要的持续检查、补充进程的逻辑:

import random, time
from selenium import webdriver
from selenium.webdriver.common.proxy import *
from fake_useragent import UserAgent
import multiprocessing

def load():
    proxy = "falcon.proxyrotator.com:8080"
    profile = webdriver.ChromeOptions()
    profile.add_argument('headless')
    profile.add_argument('--proxy-server=http://%s' % proxy)
    profile.add_argument('--user-agent=' + UserAgent().random)
    driver = webdriver.Chrome(chrome_options=profile)
    try:
        driver.get('https://ipchicken.com')
        print ('done')
        time.sleep(30)
    finally:
        driver.quit()  # 确保无论是否出错都能关闭浏览器,避免资源泄漏

if __name__ == '__main__':
    max_processes = 25
    running_processes = []
    
    while True:
        # 先清理已经结束的进程,避免列表里堆积无效的进程对象
        running_processes = [p for p in running_processes if p.is_alive()]
        
        # 计算需要启动的新进程数量
        needed_processes = max_processes - len(running_processes)
        if needed_processes > 0:
            print(f"启动 {needed_processes} 个新进程...")
            for _ in range(needed_processes):
                p = multiprocessing.Process(target=load)
                p.start()
                running_processes.append(p)
                # 给每个新进程留一点启动间隔,避免瞬间打满系统或代理资源
                time.sleep(1)
        
        # 每隔几秒检查一次进程状态,不要太频繁占用CPU
        time.sleep(5)

关键改动说明:

  • 进程跟踪列表:用running_processes保存所有活跃的进程对象,每次循环先过滤掉已结束的进程,确保我们只统计真正在运行的任务。
  • 动态补全进程:每次循环计算当前活跃进程数和最大数的差值,自动启动足够的新进程填补空缺,始终维持25个进程的上限。
  • 资源保护细节:添加了启动间隔(1秒)和检查间隔(5秒),避免瞬间创建大量进程导致系统或代理服务器压力过载。
  • 异常安全处理:把driver.quit()放到finally块里,确保即使页面加载出错,浏览器也会被正确关闭,不会残留无用的进程。

如果需要停止这个循环,直接按Ctrl+C就行;要是需要自动停止的逻辑,也可以在循环里加个判断条件(比如完成一定任务量、或者到指定时间后退出)。

内容的提问来源于stack exchange,提问作者Dylan Everything

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:56:20