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```
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix