import threading
import time
from multiprocessing.dummy import Pool
import asyncio
import random
def fun1(num_array):
result = 1
for i in num_array:
result = result * i
async def fun2(num_array):
result = 1
for i in num_array:
result = result * i
if __name__ == '__main__':
# 生成数据
start_start = time.time()
c = []
for i in range(1, 50000):
b = []
for j in range(1, 1000):
a = random.uniform(1, 1000)
b.append(a)
c.append(b)
# 多线程
start_threading = time.time()
multithread = []
for i in c:
one_thread = threading.Thread(target=fun1, args=(i,))
multithread.append(one_thread)
for i in multithread:
i.start()
for j in multithread:
j.join()
print('多线程程序时间' + str(time.time() - start_threading))
# 多进程(进程池)
start_pool = time.time()
pool = Pool(100)
pool.map(fun1, c)
pool.close()
pool.join()
print('多进程程序时间' + str(time.time() - start_pool))
# 协程
strat_asyncio = time.time()
stasks = []
for i in c:
task = fun2(i)
# 创建任务
one_task = asyncio.ensure_future(task)
# 形成任务列表
stasks.append(one_task)
# 创建一个事件循环对象
loop = asyncio.get_event_loop()
# 将任务列表封装到wait中,开始执行
loop.run_until_complete(asyncio.wait(stasks))
# 还可以绑定回调函数,在返回时调用
print('协程运行时间' + str(time.time() - strat_asyncio))
print('总的时间' + str(time.time() - start_start))
python```