1

在 Guido Van Rossum 的 2012 Pycon 演讲中,他谈到了线程:

如果您将线程用于它们最初的用途,那么操作系统级线程用于执行并行 IO,而不是用于执行并行计算。[资源]

传统上,关于进程与线程的讨论围绕调度、上下文切换成本或共享资源成本之间的差异展开。

但是,我从未了解或听说过一个概念,即对于 CPU 密集型任务与 IO 相比,一个必然比另一个更好。如果进程和线程之间本质上存在 1-1 关系(并非总是可以假设),那么从 CPU-vs-IO 的角度来看,使用哪一个是否重要?

标准的 pthread 文档并未阐明这一特定主张;有人知道更好的来源吗?

在构建已知在这些领域之一存在瓶颈的软件时,是否存在使用一种优于另一种的常见情况?

4

1 回答 1

0

大多数操作系统为每个进程提供多个线程。

这些线程可以用于没有任何交互的普通计算,用于偶尔与其他线程(通常来自同一进程)交互的计算,或用于与 I/O 交互的短突发计算。

操作系统设计通常不关心你用线程做什么。设计者期待这三者,并提供有效的机制来确定优先级、安排执行,并实现与其他线程的可靠线程交互。

我可以相信 Guido 是在谈论 Python 中内置的线程。这些线程所做的就是设计师所说的。如果他仅将它们用于 I/O,那么它们仅用于 I/O。

鉴于 Python 是一个解释器,提供计算线程是可能的,但很奇怪;由于解释器的速度往往是编译代码的 10 倍,因此您所拥有的只是一个运行速度比实际速度慢 10 倍的并行程序。想要并行计算的人想要快速得到答案,因此往往不使用解释器。

于 2012-05-28T04:51:36.170 回答