0

我想下载几张图片(最少 100,000 张)。我有这些图片的网址。

我应该使用多线程来下载这些图像吗?这会有什么显着的好处吗?

我有一个文本文件,其中包含这 100,1000 张图像的 URL。我在想我会创建 100 个线程并为每个线程分配 1000 个 URL。

这会帮助我更快地下载这些东西吗?关于这一点,什么时候适合使用多线程?

4

1 回答 1

2

我认为按照您的计划使用多线程时,您的下载速度会快得多。这是因为在下载过程中,资源(CPU、网络等)未使用会出现短暂的延迟。其他线程可以填补这些空白,以充分利用您的资源。请注意,在您的情况下,瓶颈可能是您下载的服务器形式。如果是单个,那么它可能会限制每个客户端的并发下载数量。您可能希望改变线程数以找出最佳值。

从资源使用时间间隔的角度来看,多线程通常适用于在所有涉及时间复用的资源(CPU、网络、硬磁盘等)。然而,多线程的代价是

  • 额外的资源管理,如果使用太多线程,这将过度补偿好处,即对于任何给定的资源设置都有一个最佳的加速。

  • 线程安全编程的额外复杂性 - 并最终防止临时过度使用资源(“交通堵塞”)。由于这种复杂性的增加,如果您将多线程视为优化,那么只有在必须时才使用它。记住“过早的优化是万恶之源。 ”——Donald Knuth

于 2013-11-03T07:57:30.087 回答