多线程和多处理线程池之间的区别?

问题描述 投票:0回答:2

我在文件 A 中有 20 个项目的列表,这些列表被传递到文件 B 进行处理并返回结果。

目前我正在使用多线程。并了解了线程池和多处理的概念,想知道多线程和线程池之间有什么区别,我的程序会从线程还是线程池中受益吗?

谢谢

python multithreading python-2.7 python-3.x python-multithreading
2个回答
1
投票

多线程和线程池有什么区别

多线程是CPU同时执行多个进程/线程的能力。有关详细信息,请参阅多线程。 线程池是一组预先创建的线程,您可以反复重用它们来执行任务。请参阅什么是线程池?了解更多信息。

我的程序会从线程或线程池中受益吗?

根据您的描述,您只有 2 个文件,A 和 B,并且您需要处理的项目只有 20 个。线程和线程池很可能不会提供任何好处。如果处理是 io 密集型或 cpu 密集型,您可能会从线程中受益,但您必须解释正在进行什么处理才能回答该问题。但对于线程池来说,无论哪种方式你都不会受益。使用线程池是因为创建线程非常昂贵。它们消除了多次创建/销毁线程的必要。然而,你的程序只有两个文件,所以不会有任何好处。


0
投票

多线程和多处理是用于在程序中实现并发执行的两种技术,但它们在方法、资源使用和应用方面有所不同。

主要差异 定义:

多线程:单个进程的多个线程同时执行。线程共享相同的内存空间,使它们变得轻量级。 多处理:多个进程同时执行。每个进程都有自己的内存空间,使它们独立但占用资源。 执行:

多线程:非常适合 I/O 密集型任务,其中程序等待外部操作,例如读取文件或网络数据。 多重处理:适合需要大量计算的 CPU 密集型任务,例如图像处理或大规模计算。 资源使用情况:

多线程:共享资源,这可以减少开销,但可能会导致竞争条件等问题。 多处理:使用单独的内存和资源,使其更安全,但开销更高。 性能:

多线程:受 Python 等语言中的全局解释器锁 (GIL) 的限制。 多处理:利用多个 CPU/核心实现真正的并行性。 Python 中的示例: 线程:线程模块处理并发下载文件等任务。 多处理:多处理模块利用多个核心进行繁重的计算。 结果: 对需要快速上下文切换和共享内存的任务使用多线程。对于需要真正并行性的计算密集型任务,选择多处理。根据您的计划的性质和资源可用性进行选择。

© www.soinside.com 2019 - 2024. All rights reserved.