Python - 网页抓取 - 多线程 - 线程限制?

标签 python multithreading optimization web-scraping

我有一个代码可以从网站检索搜索结果。

ExtractDetails 功能是一个搜索网站的大型搜索功能。

LangList = ['91','32','69','A9','48','62','01','75','34','73','B1',
'68','61','20','03','35','36','86','87','AS','63','04','AO','65','57','05','AE','06','AC','07','08','A4','37','72','70',
'38','09','95','10','A1','B0','AL','A8','39','AT','94','11','84','12','59','AG','AB','13','40','14','AW','67','98','AJ',
'41','15','74','16','33','17','AU','AV','A0','42','92','AI','18','AD','A2','43','AM','44','45','A3','85','58','83','71',
'21','22','A6','90','AR','99','46','78','23','24','76','AP','25','26','AN','47','60','97','49','56','27','93','AZ','02',
'28','77','AA','29','50','A5','64','51','52','AQ','AY','A7','80','30','53','54','31','96','79','89','55','66','82','81']
Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
SearchCriteria=[Alphabet] * len(LangList)
for Lang , alphabets in LostConn.items():
    for item in alphabets:
        t = Thread(target=ExtractDetails,args=(Lang,item + '%',))
        t.start()
        th.append(t)
for thr in th:
    thr.join()

该脚本的问题是,如果我运行此代码,我的笔记本电脑将挂起,因为它将生成 3406 个线程。我的问题是如何确定特定笔记本电脑上的最佳线程数?

最佳答案

可以同时运行的线程数量取决于您的机器和 CPU 的核心数量。大多数机器每个核心可以运行 2 个线程。找出适合您的机器的简单方法是使用 Python 中的 multiprocessing 模块:

import multiprocessing
multiprocessing.cpu_count()

此函数将显示您可以同时运行的最大线程数。希望这可以帮助!

关于Python - 网页抓取 - 多线程 - 线程限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52864045/

相关文章:

python - 在 Flask Python 中产生一个单独的执行线程(即向开发人员发送日志电子邮件)?

java - 如何使用多个线程处理大型文本文件中的内容?

PHP速度优化

python - 在 python 中,如何反转 2D 字典?

python - 使用 multiprocessing.Pool 打开的文件太多

python - 如何从写入文件的变量中删除引号?

java - Android从长时间运行的线程接收消息

python - 谷歌应用引擎 : How to read text file using python?

r - 如何优化递归函数来查找所有排列?

c++ - 我应该在哪个源文件中定义一个函数