python如何找出是否启用了超线程

Ray*_*Ray 10 python multiprocessing hyperthreading

我有Intel i7-2600K四核,在Ubuntu 12.04上启用了超线程.我知道我可以找到我在Python中有多少核心import multiprocessing; multiprocessing.cpu_count(),但这给了我8,因为我在4个物理核心上启用了超线程.我很想知道我有多少物理核心.有没有办法在Python中做到这一点?或者,有没有办法在Python中找出是否启用了超线程?预先感谢您的帮助!

Pau*_*ion 6

要在mac上获取超线程信息,您可以使用:

os.popen('sysctl hw').readlines()[1:20]
Run Code Online (Sandbox Code Playgroud)

并将'hw.activecpu'值与'hw.physicalcpu'值进行比较,前者是包括超线程在内的cpus数.或者你可以只比较'hw.physicalcpu'返回的值multiprocessing.cpu_count().

在linux上你可以做类似的事情:

os.popen('lscpu').readlines()
Run Code Online (Sandbox Code Playgroud)

并将'Socket(s)'值和'Core(s) per socket'值相乘以获得物理cpu的数量.再次,您可以检查此号码multiprocessing.cpu_count().

我不使用Windows,所以我无法帮助你,但似乎其他人在这方面有一些想法

可以在这里找到与此相关的示例hardware_info().


mec*_*ind 3

根据http://archive.richweb.com/cpu_info,确定cpu超线程有点复杂,但仍然有用。

请注意,该方法是特定于 Linux 的。