繁体   English   中英

Python多线程,它如何使用多个核心?

[英]Python multithreading, How is it using multiple Cores?

我在Intel(R)Core(TM)2 Duo CPU E7500 @ 2.93GHz上运行多线程应用程序(Python2.7.3)。 我认为它只使用一个核心但使用“top”命令我看到python进程不断改变核心没有。 在top命令中启用“SHOW THREADS”可以显示在不同内核上运行的不同线程进程。

有人可以解释一下吗? 正如我从理论上所知,多线程在单个核心上执行,这让我很烦。

首先,多线程意味着相反 ,即同时使用多个内核(通过线程)。 CPython确实在这方面受到了挫折,尽管每当你调用C代码(这包括部分标准库,还有像Numpy这样的扩展模块)时,可以解锁阻止Python代码并发执行的锁。 你仍然可以有多个线程,他们不会同时解释Python(相反,他们会经常轮流)。 您还谈到“Python 进程 ” - 您是否混淆了术语,或者这个“多线程”Python应用程序实际上是多处理 当然,多个Python进程可以并发运行。

但是,从你的措辞中我怀疑是另一个混​​乱的根源。 即使是单个线程也可以在多个核心上运行......但不能同时运行。 由操作系统决定哪个线程在哪个CPU上运行,并且OS调度程序不一定将线程重新分配给它在它被暂停之前运行的同一个CPU(这是有益的,正如David Schwartz在评论,但不重要)。 也就是说,单个线程/进程从CPU跳转到CPU是完全正常的。

线程设计为在可用时利用多个核心。 如果你只有一个核心,它们也会在一个核心上运行。 :-)

没有什么值得关注的,你观察到的是“按预期工作”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM