您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩🥰😍
目录
前提假设
这里假设总共有100000个任务,通过多线程执行,每次同时执行10个
方式1
代码
import time
import random
from concurrent.futures import ThreadPoolExecutor
def work(i):
# 该多线程运行过程出错时不会报错,需加异常捕获语句
try:
print(f'任务{i}开启')
# 模仿每个任务随机耗时
time.sleep(random.randint(2, 5))
print(f'任务{i}完成')
except Exception as e:
print(f'任务{i}出错')
print(e)
# 10为开启线程数,注意将for循环放在with...语句里面(即with...在最外面)
with ThreadPoolExecutor(10) as t:
# 假设总共有100000个任务通过多线程执行
for i in range(100000):
# submit提交执行函数
t.submit(work, i)
# 等到上面所有线程执行完才打印,守护线程
print('所有任务结束')
运行效果
方式2
代码
import time
import random
import threading
def work(i):
with limit:
print(f'任务{i}开启')
# 模仿每个任务随机耗时
time.sleep(random.randint(2, 5))
print(f'任务{i}完成')
# 设置同一时间只执行10个线程
limit = threading.Semaphore(10)
# 假设总共有100000个任务通过多线程执行
for i in range(10000):
threading.Thread(target=work, args=(i,)).start()
运行效果
总结
感谢观看,原创不易,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹🌹🌹
👍🏻也欢迎你,关注我。👍🏻
如有疑问,可在评论区留言哦~