Python多进程并行运行函数问题求助及优化方案咨询
问题修复与替代方案
原代码的核心问题
- 语法错误:函数定义行末尾缺少冒号
:,这会直接导致代码无法正常解析运行。 - 无限制创建进程:如果你的
list元素数量较多,循环中每次都新建进程并启动,会瞬间占用大量系统资源(CPU、内存),直接引发IDE甚至系统崩溃。
修复后的multiprocessing代码
使用multiprocessing.Pool限制并发进程数,避免资源耗尽:
from multiprocessing import Pool def network_request_function(value): # 这里编写你的API请求逻辑 print(f"处理请求: {value}") if __name__ == "__main__": input_list = [1, 2, 3, 4, 5, 6] # 替换为你的实际列表 # 根据机器配置设置最大并发进程数,比如4或8 with Pool(processes=4) as pool: pool.map(network_request_function, input_list)
注意:Windows系统下必须将进程启动代码放在if __name__ == "__main__":块内,避免重复创建子进程引发异常。
更适合IO密集型任务的替代方案
API请求属于IO密集型任务,线程池的开销远低于进程池,推荐使用concurrent.futures.ThreadPoolExecutor:
from concurrent.futures import ThreadPoolExecutor def network_request_function(value): # 这里编写你的API请求逻辑 print(f"处理请求: {value}") if __name__ == "__main__": input_list = [1, 2, 3, 4, 5, 6] # 替换为你的实际列表 # 根据API的并发限制设置最大线程数,比如10 with ThreadPoolExecutor(max_workers=10) as executor: executor.map(network_request_function, input_list)
如果目标API有请求频率限制,可在函数内添加适当延迟(如time.sleep(0.1)),避免触发限流或反爬机制。
内容的提问来源于stack exchange,提问作者HongWonYul
相关产品推荐
相关产品推荐

