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

将线程替换为多进程以提升请求发送速度的技术咨询

用多进程替代线程解决网络请求速度问题

完全可以用multiprocessing替代threading,而且改动极小,完全符合你“不过于复杂”的需求——不用动那100种请求的逻辑,只需要改启动并发的部分。

直接替换线程为进程的修改方案

因为multiprocessing.Process和threading.Thread的API几乎一致,直接替换几行代码就能搞定:

import requests
import multiprocessing  # 替换threading为multiprocessing

def main(a, proxy, proxystr):
    requests.get()
    # do some
    requests.post()
    # do some2
    # etc

if __name__ == '__main__':  # Windows系统必须加这个保护,Linux/macOS可不加但建议加上
    alg = []
    odnovrem_t = 10  # 假设你的并发数是10
    proxys = "xxx"
    proxystr = "xxx"
    for kish in range(odnovrem_t):
        gf = multiprocessing.Process(target=main, args=(kish, proxys, proxystr,))
        gf.start()
        alg.append(gf)
    for i in alg:
        i.join()

更省心的进程池方案

如果不想手动管理进程的启动和等待,用concurrent.futures.ProcessPoolExecutor会更简洁,还能自动控制并发数:

import requests
from concurrent.futures import ProcessPoolExecutor

def main(a, proxy, proxystr):
    requests.get()
    # do some
    requests.post()
    # do some2
    # etc

if __name__ == '__main__':
    odnovrem_t = 10
    proxys = "xxx"
    proxystr = "xxx"
    # 创建进程池,最大并发数设为odnovrem_t
    with ProcessPoolExecutor(max_workers=odnovrem_t) as executor:
        # 提交任务
        futures = [executor.submit(main, kish, proxys, proxystr) for kish in range(odnovrem_t)]
        # 等待所有任务完成
        for future in futures:
            future.result()

为什么这么改有效?

Python的线程因为GIL(全局解释器锁)的存在,在CPU密集型任务里没法真正并行,但网络请求是IO密集型任务——线程在等待网络响应时会释放GIL,理论上线程也能提升速度,但如果你的请求速度还是慢,可能是线程数不足、同步逻辑拖慢或代理/服务器限制导致的。

而多进程是真正的并行,每个进程有自己独立的Python解释器和GIL,能最大化利用CPU资源处理多个请求的后续逻辑,同时完全兼容你现有的requests代码,不需要改动那100种请求的实现。

注意事项

  • Windows系统下必须把启动进程的代码放在if __name__ == '__main__'块里,否则会触发重复导入和进程启动的问题。
  • 并发数不要设置得太大,一般和CPU核心数相当或略多(比如4核CPU设8-10个进程),太多进程会导致系统调度开销增大,反而变慢。
  • 如果main函数里有需要共享的数据,多进程默认是拷贝一份独立使用,若需共享状态,得用multiprocessing提供的队列、管道或共享内存,但如果只是独立请求,完全不需要处理这个。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:42:33