python futures 多进程 多线程

##多进程编程 耗cpu的操作(计算型) 用多进程编程,对于io操作用多线程编程 进程切换代价要高于线程
import time,random
from concurrent import futures
def fib(n):##耗cpu的操作(计算型)
    if n<2:
        return 1
    return fib(n-1)+fib(n-2)

def ioSleep(second):##io的操作
    time.sleep(random.random())
    return second

if __name__=="__main__":
    with futures.ThreadPoolExecutor(3) as tp:##多线程
       start_time=time.time()
       for result in  tp.map(fib,range(25,35)):
           print(result)
       print(time.time()-start_time)###耗时差不多5s

    with futures.ProcessPoolExecutor(3) as tp:##多进程
       start_time=time.time()
       for result in  tp.map(fib,range(25,35)):
           print(result)
       print(time.time()-start_time)###耗时差不多3s


    with futures.ThreadPoolExecutor(3) as tp:##多线程
       start_time=time.time()
       for result in  tp.map(ioSleep,range(2,35)):
           print(result)
       print(time.time()-start_time)###耗时差不多6s

    with futures.ProcessPoolExecutor(3) as tp:##多进程
       start_time=time.time()
       for result in  tp.map(ioSleep,range(2,35)):
           print(result)
       print(time.time()-start_time)###耗时差不多6s

 

posted @ 2019-11-30 15:11  howhy  阅读(514)  评论(0)    收藏  举报