
概述1,
进程可以无限开吗?进程不可以无限开,cpu有十六核,代表可以同时处理16个任务,如果有160个进程,每个进程处理需要0.01s,16核的处理器处理160个进程就需要0.5s,因为进程越多需要的时间越多。2,进程池import osimport timeimport randomfrom multiprocessing import Poolfrom multiprocessing import Processdef func(i):i += 1if __name__ == '__main__':p = Pool(5) # 创建了5个进程。一般来说,这里的数值是核数#+1,如果不知道cpu的核数是多少,可以调用os.cpu_count()查看start = time.time()p.map(func,range(1000)) # target = func args=next(iterable) # [(1,2,3),1,2,3,4]p.close() # 是不允许再向进程池中添加任务p.join()print(time.time() - start)start = time.time()l = []for i in range(1000):p = Process(target=func,args=(i,)) # 创建了一百个进程p.start()l.append(p)[i.join() for i in l]print(time.time() - start)3,import timefrom multiprocessing import Pool# applydef func(i):time.sleep(1)i += 1# print(i)return i+1if __name__ == '__main__':p = Pool(5)res_l = []for i in range(20):# p.apply(func,args=(i,)) # apply是同步提交任务的机制res = p.apply_async(func,args=(i,)) # apply_async是异步提交任务的机制res_l.append(res)# print(res.get()) # 阻塞 :等待着任务结果p.close() # close必须加在join,不允许再添加新的任务了p.join() # 等待子进程结束再往下执行[print(i.get()) for i in res_l]
1,进程可以无限开吗?
进程不可以无限开,cpu有十六核,代表可以同时处理16个任务,如果有160个进程,每个进程
处理需要0.01s,16核的处理器处理160个进程就需要0.5s,因为进程越多需要的时间越多。
2,进程池
multiprocessing multiprocessing += 1 == = Pool(5) start =1000)) p.close() (time.time() -== i range(1000= Process(target=func,args=(i,)) i (time.time() - start)3,
multiprocessing <span >def
<span > func(i):
time.sleep(1<span >)
i += 1
<span >#<span > print(i)
<span >return i+1<span >if
<span >name == <span >'<span >main<span >'<span >:
p = Pool(5<span >)
res_l =<span > []
<span >for i <span >in range(20<span >):
<span >#<span > p.apply(func,)) # apply是同步提交任务的机制
res = p.apply_async(func,)) <span >#<span > apply_async是异步提交任务的机制
<span > res_l.append(res)
<span >#<span > print(res.get()) # 阻塞 :等待着任务结果
p.close() <span >#<span > close必须加在join,不允许再添加新的任务了
p.join() <span >#<span > 等待子进程结束再往下执行
[<span >print(i.get()) <span >for i <span >in res_l] 总结 以上是内存溢出为你收集整理的python:进程池全部内容,希望文章能够帮你解决python:进程池所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)