![]() |
1
1
如果以下假设成立:
... 那么你的下载速度就不太可能受到CPU的限制了。瓶颈很可能是网络带宽或磁盘I/O带宽。 在任何情况下,由于AFAICT您的用例是令人尴尬的并行的(即各种下载不必相互通信或交互,它们只是各自独立地做自己的事情),所以使用多线程与多处理在性能方面不太可能有太大的不同。当然,唯一确定的方法是两种方法都尝试,并测量每种方法的吞吐量。 |
![]() |
2
1
简短的回答 一般来说, 这取决于你的工作量。 如果你是认真的表现,请提供细节。例如,是否将图像存储到磁盘,图像大小是否为>1GB与否,等等。 注意:一般来说,如果不是任务关键型的,这两种方法都是可以接受的,因为我们可以使用threading.Thread和multiprocessing.Process轻松地在多线程和多进程实现之间切换。 更多评论 似乎不是CPU而是IO将成为瓶颈。
|
![]() |
3
0
如果你的文件传输速度不是特别慢——比把数据写到磁盘慢,多线程/多处理就没用了。我所说的文件传输是指用一个硬盘下载图像并将其写入本地计算机。
另一方面,如果您对这些图像进行一些CPU密集型的预处理,然后将它们保存到磁盘上,多线程将非常有用。
一般来说: 多线程-更容易在单个应用程序中使用,因为所有线程共享单个进程的虚拟地址空间,并且可以轻松地相互通信。另一方面,单个进程的虚拟地址空间有限(在32位计算机上小于4GB)。 多处理—更难在单个应用程序中使用(需要进程间通信),但更具可扩展性和更健壮性(如果文件传输进程崩溃,则只有单个文件传输失败)+要使用更多的虚拟地址空间。 |
![]() |
Jamie M · 组合来自多个进程的数据 2 年前 |
![]() |
Dinesh · 如果进程数超过内核数的一半,为什么性能会下降? 7 年前 |
![]() |
cooke · python多处理使用特定参数串行运行 7 年前 |
|
SSV · 如何在Java中并行处理对象列表 7 年前 |
![]() |
Vingtoft · 使用管道的Python多进程无阻塞内部通信 7 年前 |
![]() |
cosz3 · Python多进程是否共享同一对象? 7 年前 |
![]() |
Anish Shanbhag · 多处理事件不工作 7 年前 |