看一个多线程的代码,以后遇到也有个思路
# coding: utf-8
from concurrent.futures import ThreadPoolExecutor
import time
start = time.time()
# 假设我们有一个URL列表,这里用占位符代替
urls = [i for i in range(25)]
# 模拟发送网络请求
def send_request(url):
print(f"发送请求 {url}")
time.sleep(1) # 模拟网络延迟
print(f"收到请求 {url} 的响应")
return url
# 使用ThreadPoolExecutor创建线程池,并限制线程数为 max_workers
with ThreadPoolExecutor(max_workers=5) as executor:
# 使用executor的map方法将urls列表中的每个URL映射到send_request函数
# 这会自动将任务分配给线程池中的线程,而且 results_iterator 收集到的返回值的结果
results_iterator = executor.map(send_request, urls)
end = time.time()
print(f"总共耗时 {end - start} 秒")
results_iterator 收集到的返回值是有序的