最方便建立進程池,線程池的方法
阿新 • • 發佈:2017-08-31
for ret port 來講 tor i/o getpid .get span
建立進程池,線程池:
進程池
from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor import time,random,os def task(n): print(‘%s is running‘%os.getpid()) time.sleep(5) return n**2 if __name__ == ‘__main__‘: p = ProcessPoolExecutor() l=[] start=time.time() for i in range(20): obj=p.submit(task,i) l.append(obj) p.shutdown() print([obj.result()for obj in l]) print(time.time()-start)
線程池
from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor import time,random,os def task(n): print(‘%s is running‘%os.getpid()) time.sleep(5) returnn**2 if __name__ == ‘__main__‘: p = ThreadPoolExecutor() l=[] start=time.time() for i in range(20): obj=p.submit(task,i) l.append(obj) p.shutdown() print([obj.result()for obj in l]) print(time.time()-start)
在這裏我要聲明一下,多進程,以及多線程,進程池,線程池:
多進程,簡單來來講就是好多個進程在做事,當進行I/O操作的是時候,一個進程去做這件事,其他進程就只能等著,只有這個進程做完了,其他進程才能去做,就和上廁所是一樣,一個人上廁所,其他人都得等著,在這裏又出現一個進程池,所謂的進程池就是用來規範多進程的,不理解吧,(這樣多進程用於計算的時候,比如說你有好多的進程2000000個,這麽多都在計算是不是很可怕,這裏添加一個進程池約束一下是不是就完美了,裏面的計算完了,外面的再進來計算)
多線程,怎麽講呢,就是在一個進程裏面,所以這個進程裏面的資源對於線程來說就是共享的啦,多線程常用於I/O操作,
最方便建立進程池,線程池的方法