python线程池案例介绍
时间: 2023-07-12 09:58:48 浏览: 63
Python 线程池是一种能够提高线程利用率的技术,它通过预先创建一定数量的线程并将它们加入一个池中,当需要执行任务时,线程池中的线程会被自动分配执行任务,任务完成后线程会归还给线程池,以便下次使用。这种方式可以避免线程的频繁创建和销毁,提高线程的利用率,同时也可以控制并发线程的数量,避免系统资源的过度消耗。
下面是一个 Python 线程池的例子,用来实现多线程下载。这个例子使用了 Python 中的 ThreadPoolExecutor 类来实现线程池。
```python
import requests
import concurrent.futures
def download(url):
response = requests.get(url)
filename = url.split("/")[-1]
with open(filename, "wb") as f:
f.write(response.content)
print(f"{filename} downloaded")
if __name__ == "__main__":
urls = [
"https://picsum.photos/200/300",
"https://picsum.photos/250/350",
"https://picsum.photos/300/400",
"https://picsum.photos/350/450",
"https://picsum.photos/400/500",
]
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
executor.map(download, urls)
```
在这个例子中,我们定义了一个 download 函数用来下载图片,然后定义了一个包含多个 URL 的列表 urls。接着,我们使用 ThreadPoolExecutor 类创建了一个最大线程数为 3 的线程池,然后使用 map 方法将下载任务分配给线程池中的线程执行。
需要注意的是,如果下载的任务需要访问共享资源,比如文件系统或数据库等,需要在 download 函数中加锁以保证线程安全。