mirror of
https://github.com/liberatedsystems/openCom-Companion.git
synced 2024-11-25 23:00:36 +01:00
93 lines
1.9 KiB
Python
93 lines
1.9 KiB
Python
'''
|
|
CPU
|
|
===
|
|
|
|
Simple Example
|
|
---------------
|
|
|
|
To get CPU count::
|
|
>>> from plyer import cpu
|
|
>>> # 1 socket, 1 core per socket, 2 threads per core
|
|
>>> cpu.sockets # 1 CPU socket (or slot)
|
|
1
|
|
>>> cpu.physical # 1 CPU socket * 1 core per socket
|
|
1
|
|
>>> cpu.logical # 1 CPU socket * 1 core per socket * 2 threads per core
|
|
2
|
|
|
|
Supported Platforms
|
|
-------------------
|
|
|
|
MacOS
|
|
Linux
|
|
Windows
|
|
'''
|
|
|
|
|
|
class CPU:
|
|
'''
|
|
Facade providing info about sockets, physical and logical
|
|
number of processors.
|
|
'''
|
|
|
|
@property
|
|
def sockets(self):
|
|
'''
|
|
Property that contains the count of CPU sockets.
|
|
'''
|
|
return self._sockets()
|
|
|
|
@property
|
|
def physical(self):
|
|
'''
|
|
Property that contains the total number of physical cores
|
|
(max core count) in the system.
|
|
|
|
.. note:: `sockets * cores per socket`
|
|
'''
|
|
return self._physical()
|
|
|
|
@property
|
|
def logical(self):
|
|
'''
|
|
Property that contains the total number of logical cores
|
|
(max thread count) in the system.
|
|
|
|
.. note:: `sockets * cores per socket * threads per core`
|
|
'''
|
|
return self._logical()
|
|
|
|
@property
|
|
def cache(self):
|
|
'''
|
|
Property that contains the count of L1, L2, L3 caches in the system
|
|
as a dictionary `{'L1': int, 'L2': int, 'L3': int}`.
|
|
'''
|
|
return self._cache()
|
|
|
|
@property
|
|
def numa(self):
|
|
'''
|
|
Property that contains the count of NUMA nodes in the system.
|
|
|
|
.. note:: https://en.wikipedia.org/wiki/Non-uniform_memory_access
|
|
'''
|
|
return self._numa()
|
|
|
|
# private
|
|
|
|
def _sockets(self):
|
|
raise NotImplementedError()
|
|
|
|
def _physical(self):
|
|
raise NotImplementedError()
|
|
|
|
def _logical(self):
|
|
raise NotImplementedError()
|
|
|
|
def _cache(self):
|
|
raise NotImplementedError()
|
|
|
|
def _numa(self):
|
|
raise NotImplementedError()
|