| 
                         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 style="color: #0000ff">def<span style="color: #000000"> func(i): 
time.sleep(1<span style="color: #000000">) 
i += 1 
<span style="color: #008000">#<span style="color: #008000"> print(i) 
<span style="color: #0000ff">return i+1 
<span style="color: #0000ff">if <span style="color: #800080">name == <span style="color: #800000">'<span style="color: #800000">main<span style="color: #800000">'<span style="color: #000000">: 
p = Pool(5<span style="color: #000000">) 
res_l =<span style="color: #000000"> [] 
<span style="color: #0000ff">for i <span style="color: #0000ff">in range(20<span style="color: #000000">): 
<span style="color: #008000">#<span style="color: #008000"> p.apply(func,))   # apply是同步提交任务的机制 
res = p.apply_async(func,))  <span style="color: #008000">#<span style="color: #008000"> apply_async是异步提交任务的机制 
<span style="color: #000000">        res_l.append(res) 
<span style="color: #008000">#<span style="color: #008000"> print(res.get())   # 阻塞 :等待着任务结果 
p.close() <span style="color: #008000">#<span style="color: #008000"> close必须加在join,不允许再添加新的任务了 
p.join()  <span style="color: #008000">#<span style="color: #008000"> 等待子进程结束再往下执行 
[<span style="color: #0000ff">print(i.get()) <span style="color: #0000ff">for i <span style="color: #0000ff">in res_l]                         (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |