我在这里提出了另一个简单的问题,我真的需要一些帮助。我有一个网站列表,我想通过请求浏览它们。但是,为了加快速度,我想使用多处理。我该如何执行此操作?
例:
import requests
import threading
from threading import Thread
list_ex = ["www.google.com","www.bing.com","www.yahoo.com"]
def list_request():
for item in list_ex:
ex = request.get(list_ex)
print(ex.text)
我该怎么做,但由于我有 100+ 所以网站:),所以我需要多处理
- 您可以使用DASK进行多处理。
它将使用你所有的系统核心......而传统的python只使用一个核心
。
达斯克官方.....达斯克维基百科
多线程在这里是一个选项,因为获取 url 不是 CPU 密集型的,而是 I/O 密集型的。因此,单个进程可以有多个线程并行运行requests.get
。
import requests
from multiprocessing.pool import ThreadPool
def read_url(url):
return requests.get(url).text
urls = ["www.google.com","www.bing.com","www.yahoo.com"]
with ThreadPool() as pool:
texts = pool.map(read_url, urls)
您可以通过将ThreadPool
替换为Pool
来使用多处理。对于提供的三个 URL,我使用Pool
和ThreadPool
获得了类似的运行时,并且两者都比在循环中按顺序运行read_url
更快。