python多进程不快反慢
如题用pool函数创建进程池之后
执行速度反而更慢
求大佬给个多线程或者多进程下载图片的例子
一般卡在网速上,试试协程 代码看看 人生苦短,我爱Python nstar1221 发表于 2020-3-26 18:54
一般卡在网速上,试试协程
已解决 谢谢大佬关注 猫南北爱上狗东西 发表于 2020-3-26 19:01
代码看看
已解决 谢谢大佬关注
希望能给个多进程模板 下载图片属于io密集型操作 选用多线程 或协程操作比较合适 在cpu密集型操作中多进程的优势比较明显 import requests
from scrapy import Selector
from concurrent.futures import ThreadPoolExecutor
from queue import Queue
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'
}
class BoundedThreadPoolExecutor(ThreadPoolExecutor):
def __init__(self, max_workers=None, thread_name_prefix=''):
super().__init__(max_workers, thread_name_prefix)
self._work_queue = Queue(max_workers * 2)
def get_href():
# 获取所有url
hrefs = []
url = 'https://www.2717.com/ent/meinvtupian/list_11_1.html'
res = requests.get(url=url, headers=headers)
res.encoding = 'gb2312'# respose重新编码
html = res.text
# 获取目录页所有链接
sel = Selector(text=html)
lis = sel.xpath("//div[@class='MeinvTuPianBox']//li")
for li in lis:
a = li.xpath('.//a')
href = a.css('::attr(href)').extract()
href = 'https://www.2717.com' + href
hrefs.append(href)
return hrefs
def parser_img(href):
print(href)
if __name__ == '__main__':
hrefs = get_href()
executor = BoundedThreadPoolExecutor(max_workers=8)
for href in hrefs:
executor.submit(parser_img, href) 魔道书生 发表于 2020-3-26 19:44
已解决 谢谢大佬关注
希望能给个多进程模板
我写了个多进程爬虫框架,你可以去看看。pypi搜MultiprocessingSpider
页:
[1]