psutil python cpu

psutil python



Manera portátil de detectar el número de*CPU utilizables*en Python (1)

No creo que recibas respuestas verdaderamente portátiles, así que daré una correcta.

La respuesta correcta * para Linux es len(os.sched_getaffinity(pid)) , donde pid puede ser 0 para el proceso actual. Esta función está expuesta en Python 3.3 y versiones posteriores; Si lo necesitas antes, tendrás que hacer un código de cffi lujo.

Editar: puede intentar ver si puede usar una función int omp_get_num_procs(); si existe, es la única respuesta significativa que encontré en esta pregunta, pero no la he probado desde Python.

Según esta pregunta y respuesta, Python multiprocessing.cpu_count () devuelve ''1'' en Nvidia Jetson TK1 de 4 núcleos : la salida de multiprocessing.cpu_count() 4 núcleos refleja la cantidad de CPU activas en uso , como opuestas a la cantidad de CPU realmente utilizables por el programa Python de llamada.

Un lenguaje común de Python es usar el valor de cpu_count() de cpu_count() para inicializar el número de procesos en un Pool . Sin embargo, en los sistemas que utilizan una estrategia de "activación dinámica de la CPU", ese lenguaje se rompe bastante mal (al menos en un sistema relativamente inactivo).

¿Hay alguna forma sencilla (y portátil) de obtener el número de procesadores utilizables (en oposición al número actualmente en uso ) de Python?

Notas:

  1. Esta pregunta no es respondida por la respuesta aceptada en Cómo averiguar el número de CPU que utilizan python , ya que, como se señaló en la pregunta vinculada al inicio de esta pregunta, la impresión del contenido de /proc/self/status muestra los 4 núcleos como Estar disponible para el programa.

  2. En mi opinión, "portátil" excluye cualquier enfoque que implique analizar los contenidos de /proc/self/status , cuyo formato puede variar de una versión a otra de Linux, y que ni siquiera existe en OS X. (Lo mismo ocurre con cualquier otro pseudo-archivo, también.)