多进程提速
方式一:multiprocessing.Process
def worker(procnum, return_dict): '''worker function''' print str(procnum) + ' represent!' return_dict[procnum] = procnum if __name__ == '__main__': manager = Manager() return_dict = manager.dict() jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i,return_dict)) jobs.append(p) p.start() for proc in jobs: proc.join() # 最后的结果是多个进程返回值的集合 print return_dict.values()
方式二:Process
pool = Pool(4) manager = Manager() return_dict = manager.dict() jobs = [] q = Queue() with open(data_path, 'r', encoding='utf8') as fr: content = fr.readlines() for d in content[:100]: q.put(d) print('数据放入队列完毕') for i in range(5): p = Process(target=func, args=(q, return_dict)) jobs.append(p) p.start() for proc in jobs: proc.join() print(return_dict.values())
方式三:Pool
import multiprocessing import time def func(msg): print('hello :', msg, time.ctime()) time.sleep(2) print('end', time.ctime()) return 'done' + msg if __name__ == '__main__': pool = multiprocessing.Pool(2) result = [] for i in range(3): msg = 'hello %s' % i result.append(pool.apply_async(func=func, args=(msg,))) pool.close() pool.join() for res in result: print('***:', res.get()) # get()函数得出每个返回结果的值 print('All end--')
时刻记着自己要成为什么样的人!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)