¿Cómo hace un subproceso? ¿El hilo produce el rest de su cuántica en Python?

Tengo un hilo que está sondeando una pieza de hardware.

while not hardware_is_ready(): pass process_data_from_hardware() 

Pero hay otros hilos (y procesos) que pueden tener cosas que hacer. Si es así, no quiero quemar la CPU revisando el hardware cada otra instrucción. Ha pasado un tiempo desde que traté con los subprocesos, y cuando lo hice no era Python, pero creo que la mayoría de las bibliotecas de subprocesos tienen una función de yield o algo que permite que un subproceso le diga al progtwigdor “Dale una oportunidad a los otros subprocesos. ”

 while not hardware_is_ready(): threading.yield() # This function doesn't exist. process_data_from_hardware() 

Pero no puedo encontrar ninguna referencia a algo como esto en la documentación de subprocesos. Python tiene una statement de yield , pero estoy bastante seguro de que eso es algo completamente distinto (relacionado con los generadores).

¿Qué es lo correcto a hacer aquí?

    time.sleep(0) es suficiente para obtener el control; no es necesario utilizar un épsilon positivo. De hecho, time.sleep(0) SIGNIFICA “ceder a cualquier otro hilo que pueda estar listo”.

    Lea sobre el locking de intérprete global (GIL).

    Por ejemplo: http://jessenoller.com/2009/02/01/python-threads-and-the-global-interpreter-lock/

    También: http://www.pyzine.com/Issue001/Section_Articles/article_ThreadingGlobalInterpreter.html

    Haga esto en su código si tiene que realizar la espera ocupada (por ejemplo, encuestando un dispositivo).

     time.sleep( 0.0001 ) 

    Esto cederá al progtwigdor de hilos.

    Además, recogí algunas notas y referencias en http://homepage.mac.com/s_lott/iblog/architecture/C551260341/E20081031204203/index.html

    Si está haciendo esto en * nix, puede encontrar útil la biblioteca de selección . Kamaela también tiene algunos componentes que pueden ser útiles, pero puede requerir un poco de cambio de paradigma.