python - 基础 多线程| 线程池 执行任务代码
1. 多线程 不带参数
from threading import Thread def func(): for i in range(100): print('函数', i) if __name__ == '__main__': #主程序
t = Thread(target=func)# 创建多线程
t.start() #启动执行
for i in range(100):
print('主线程' , i)
2. 多线程带 参数
from threading import Thread def func(name): for i in range(100): print(name, i) if __name__ == '__main__': #主程序 t1 = Thread(target=func, args=('张',))# 创建多线程 t1.start() #启动执行 t2 = Thread(target=func, args=('李',))# 创建多线程 t2.start() #启动执行
3. 线程池 简单无循环
#创建线程池 from concurrent.futures import ThreadPoolExecutor def func(name): for i in range(100): print(name, i) if __name__ == '__main__': #创建线程池 with ThreadPoolExecutor(10) as t: t.submit(func, '赵') t.submit(func, '钱') t.submit(func, '孙') t.submit(func, '李') t.submit(func, '周') t.submit(func, '武') t.submit(func, '正') t.submit(func, '王') t.submit(func, '曹') t.submit(func, '小')
4. 线程池循环
#创建线程池 from concurrent.futures import ThreadPoolExecutor def func(name): for i in range(100): print(name, i) if __name__ == '__main__': #创建线程池 with ThreadPoolExecutor(10) as t: for i in range(1000): t.submit(func, f'第{i}个打印')
案例
import requests import re import json from concurrent.futures import ThreadPoolExecutor '''图片下载''' def download(img_url): name = img_url.split('/')[-1] #切片图片标题 print(f'{name}开始下载') resp = requests.get(img_url) #请求图片 with open('img/' + name, mode='wb') as f: #设置保存路径 f.write(resp.content) # 下载图片 print('下载完成') '''函数''' def main(): url = 'https://desk.zol.com.cn/bizhi/9911_119096_2.html' resp = requests.get(url) # 预加载 写规则 obj = re.compile(r'var deskPicArr.*?= (?P<url>.*?);') # 在页面中查找 res = obj.search(resp.text) # 查找到的结果提取出来 字符串 res1 = res.group('url') # 将字符串转化为字典 res1 = json.loads(res1) with ThreadPoolExecutor(10) as t: # 设置线程池 for item in res1['list']: #循环 img_size = (item.get('oriSize')) #得到尺寸 img_url = (item.get('imgsrc')) # 得到图片地址 # 替换获取所有图片尺寸 img_url = img_url.replace('##SIZE##', img_size) #替换图片尺寸 t.submit(download, img_url) #开始线程池 , img_url 参数 调用函数download ( img_url ) if __name__ == '__main__': main()

浙公网安备 33010602011771号