在 Python 中并行下载,并发下载的最佳数量是多少,使用哪种方法?

彼得福斯

我正在尝试在 python 中并行化数千次下载。每次下载需要 2-3 秒。我看过多线程与多处理,似乎多线程对 IO 来说更好。

我有一个 url 的 python 列表,我使用这个函数来下载它们。

for k in range(0, 90000):
            id_sep = urls[k].rpartition('/')
            path = 'DownloadFolder/' + id_sep[2] + '.pdf'
            if not os.path.exists(path): 
                urllib.request.urlretrieve(arxiv_PDF_IDs[k], path)

我想知道并行运行下载的最佳方法是什么。

另一个考虑因素是并发下载的最佳数量是多少。这和核心数有关系吗?我的系统根据这个命令有两个

导入多处理

multiprocessing.cpu_count()

我有两个核心。这是否意味着同时下载的最佳数量是两次?如果是这样,我如何一次只进行两次下载,并将其余的迭代排队?

修剪

下载不是一个受计算限制的过程;核心计数不太可能驱动您的并行性。相反,这将取决于您的网络带宽(或您的份额)。我们没有您的网络配置和物理特征,因此我们无法预测。

但是,为您找到解决方案的最快途径可能是运行一些简短的经验测试。每次运行将并行度扩展 3 倍或 4 倍;您可能会很快找到“最佳位置”。您可以尝试在 proc/thread 之间切换,但这不应成为限制因素——它应该是与该带宽平衡的网络响应。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何配置Vuze的并发下载数量?

来自分类Dev

Python中asyncio的默认并发级别是多少?

来自分类Dev

使用pySmartDL并行下载-python multiprocess

来自分类Dev

这种方法在数组中查找反转数的时间复杂度是多少(python)?

来自分类Dev

Python 如何使用 multiprocessing.pool 并行下载多个文件

来自分类Dev

Python:哪种方法更好?

来自分类Dev

遍历S3并将每个文件分别下载到python中的最佳方法

来自分类Dev

使用Python下载图像

来自分类Dev

使用python下载网站

来自分类Dev

使用python下载pdf

来自分类Dev

使用 Python 下载 CVS“下载 CSV”按钮

来自分类Dev

Python中import语句的范围是多少

来自分类Dev

哪种方法对Python迭代更快?

来自分类Dev

网页上有多个并发下载

来自分类Dev

Python中的异步文件下载

来自分类Dev

咨询下载python中的文件

来自分类Dev

如何使用python下载tarball?

来自分类Dev

使用python下载.csv文件

来自分类Dev

使用python下载很多文件

来自分类Dev

使用python请求下载CSV

来自分类Dev

从ttdownloader使用python下载视频

来自分类Dev

使用python下载很多文件

来自分类Dev

无法使用python下载图像

来自分类Dev

AFNetworking 2:限制并发下载任务的最大数量

来自分类Dev

AFNetworking 2:限制并发下载任务的最大数量

来自分类Dev

使用python在子矩阵中查找不同元素数量的最佳方法

来自分类Dev

使用Python中的request方法从多页网站下载数据

来自分类Dev

有什么方法可以在Python中模拟文件下载?

来自分类Dev

使用python下载数千个文件的最快方法?