##多进程编程 耗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