Performance 如何使用多处理优化Python代码以生成和过滤非常大的活动URL列表?[代码非常慢]

Performance 如何使用多处理优化Python代码以生成和过滤非常大的活动URL列表?[代码非常慢],performance,python-requests,multiprocessing,Performance,Python Requests,Multiprocessing,1) 我的代码的目标是检查大约400k个URL是否处于活动状态,并由此生成一个包含所有活动URL的csv文件。下面使用多处理的代码在较小的URL子集上运行良好,但在完整的URL集上运行非常慢 2) 我正在寻找如何优化和主要加快代码的想法。即使在它循环了所有的URL之后,过滤结果并生成csv文件仍然需要很长时间。 我有几次代码崩溃,我也在寻找一种方法来确保它已经检查过的链接不会丢失 3) 目前我唯一能想到的就是细分URL列表并生成多个csv文件,稍后再合并。这将确保已经取得中间结果,但我怀疑它是否

1) 我的代码的目标是检查大约400k个URL是否处于活动状态,并由此生成一个包含所有活动URL的csv文件。下面使用多处理的代码在较小的URL子集上运行良好,但在完整的URL集上运行非常慢

2) 我正在寻找如何优化和主要加快代码的想法。即使在它循环了所有的URL之后,过滤结果并生成csv文件仍然需要很长时间。 我有几次代码崩溃,我也在寻找一种方法来确保它已经检查过的链接不会丢失

3) 目前我唯一能想到的就是细分URL列表并生成多个csv文件,稍后再合并。这将确保已经取得中间结果,但我怀疑它是否会加快速度

import requests
from multiprocessing.dummy import Pool as ThreadPool
import pandas as pd 

urls = ["%.7d" % i for i in range(8700000,8300000,-1)]

def get_status(url):
    r = requests.get(r'https://www.somesite.be/'+url)
    print(url)
    return r.status_code, url


if __name__ == "__main__":
    pool = ThreadPool(10)  # Make the Pool of workers
    results = pool.map(get_status, urls) #Open the urls in their own threads
    ids = list(filter(lambda x: x[0] == 200, results))
    ids_1 = list(map(lambda x: x[1], ids))
    df = pd.DataFrame(ids_1)
    df.to_csv('ids.csv', index=False)
    pool.close()
    pool.join()
可能会因为代码没有实际问题而被询问。可能会因为代码没有实际问题而被询问。