J'ai un thread qui interroge un morceau de matériel.Comment un threading.Thread cède le reste de son quantum en Python?
while not hardware_is_ready():
pass
process_data_from_hardware()
Mais il y a d'autres threads (et processus!) Qui pourraient avoir des choses à faire. Si c'est le cas, je ne veux pas brûler cpu vérifier le matériel toutes les autres instructions. Cela fait un moment que j'ai traité le threading, et quand je l'ai fait, ce n'était pas Python, mais je crois que la plupart des librairies ont une fonction yield
ou quelque chose qui permet à un thread de dire au planificateur "Donner une chance aux autres threads. "
while not hardware_is_ready():
threading.yield() # This function doesn't exist.
process_data_from_hardware()
Mais je ne trouve aucune référence à quelque chose comme ça dans la documentation de threading. Python a une instruction yield
, mais je suis à peu près sûr que c'est autre chose (à propos des générateurs).
Quelle est la bonne chose à faire ici?
Est-ce documenté quelque part? Je pensais que cela pourrait être vrai - je l'ai vu dans d'autres langues - mais je ne pouvais pas trouver une mention dans les docs Python. –
par exemple, http://docs.python.org/library/sched.html "delayfunc sera également appelé avec l'argument 0 après que chaque événement est exécuté pour permettre aux autres threads de s'exécuter dans des applications multithread." (delayfunc est généralement time.sleep ici). Je suis d'accord qu'il serait plus agréable si cela était documenté plus directement dans le module de temps ;-) –
Bien caché! Merci! –