如何在Python中同时运行多个不同的方法?
如何并行执行多个无参数的Python方法
当然可以实现,用Python自带的multiprocessing或concurrent.futures模块就能搞定多个不同无参数方法的并行执行,下面给你两种实用方案:
方案一:用multiprocessing手动创建进程
直接为每个方法创建独立进程,手动管理启动和等待:
import sys import time import multiprocessing import NO_1 import NO_2 import NO_3 import NO_4 import NO_5 if __name__ == '__main__': start = time.time() # 为每个方法创建进程实例 processes = [ multiprocessing.Process(target=NO_1.NO_1), multiprocessing.Process(target=NO_2.NO_2), multiprocessing.Process(target=NO_3.NO_3), multiprocessing.Process(target=NO_4.NO_4), multiprocessing.Process(target=NO_5.NO_5) ] # 启动所有进程 for p in processes: p.start() # 等待所有子进程执行完毕,再继续主进程逻辑 for p in processes: p.join() end = time.time() - start print(f"总执行耗时: {end:.2f}秒")
方案二:用concurrent.futures进程池(更简洁)
用进程池自动管理进程生命周期,代码更简洁:
import sys import time from concurrent.futures import ProcessPoolExecutor import NO_1 import NO_2 import NO_3 import NO_4 import NO_5 if __name__ == '__main__': start = time.time() # 把要执行的方法整理成列表 task_list = [NO_1.NO_1, NO_2.NO_2, NO_3.NO_3, NO_4.NO_4, NO_5.NO_5] # 进程池上下文管理器会自动处理进程创建和销毁 with ProcessPoolExecutor() as executor: # 批量提交任务,lambda用来调用无参数方法 executor.map(lambda func: func(), task_list) end = time.time() - start print(f"总执行耗时: {end:.2f}秒")
注意事项
- 所有多进程代码必须放在
if __name__ == '__main__':块内,这是Windows系统的强制要求,避免递归创建进程。 - 如果你的方法是IO密集型(比如网络请求、文件读写),可以换成
ThreadPoolExecutor(线程池),资源开销更小;如果是CPU密集型,用进程池才能绕过Python的GIL限制,真正实现并行。 - 要是方法有返回值,
executor.map会按任务顺序返回结果,也可以用executor.submit()配合result()单独获取每个任务的返回值。
内容的提问来源于stack exchange,提问作者LEEJISU
相关产品推荐
相关产品推荐

