小编给大家分享一下使用python线程池的好处是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
python可以做什么
Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。
1、使用好处
提高性能:由于减去了大量新建终止线程的费用,重用了线程资源;
适用场景:适用于处理大量突发请求或需要大量线程完成任务,但实际任务处理时间短。
防御功能:可以有效避免系统因线程过多而导致系统负载过大而相应变慢的问题。
代码优势:使用线程池的语法比创建自己的线程更简单。
2、实例
import concurrent.futuresimport requestsfrom bs4 import BeautifulSoup def craw(url): # 爬取网页内容 r = requests.get(url) return r.text def parse(html): # 解析其中的内容 soup = BeautifulSoup(html, "html.parser") links = soup.find_all("a", class_="post-item-title") return [(link["href"], link.get_text()) for link in links] # 那链接和标题拿出来 if __name__ == '__main__': # 待爬取的网页链接 urls = [ "https://www.cnblogs.com/sitehome/p/{}".format(page) for page in range(1, 50 + 1) ] # craw with concurrent.futures.ThreadPoolExecutor() as pool: htmls = pool.map(craw, urls) htmls = list(zip(urls, htmls)) for url, html in htmls: print(url, len(html)) print("craw over") # parse with concurrent.futures.ThreadPoolExecutor() as pool: futures = {} for url, html in htmls: future = pool.submit(parse, html) futures[future] = url # for future, url in futures.items(): # print(url, future.result()) for future in concurrent.futures.as_completed(futures): url = futures[future] print(url, future.result())
以上是“使用python线程池的好处是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!