Ich habe einen Thread, der ein Stück Hardware abfragt.Wie führt ein threading.Thread in Python zum Rest seines Quantums?
Aber es gibt andere Threads (und Prozesse!), Die Dinge zu tun haben könnten. Wenn das der Fall ist, möchte ich keine CPU brennen, um die Hardware bei jeder anderen Anweisung zu überprüfen. Es ist eine Weile her, seit ich mich mit Threading beschäftigt habe, und als ich es tat, war es nicht Python, aber ich glaube, die meisten Threading-Bibliotheken haben eine yield
Funktion oder etwas, das einem Thread den Scheduler sagt "Gib den anderen Threads eine Chance. "
while not hardware_is_ready():
threading.yield() # This function doesn't exist.
process_data_from_hardware()
Aber ich kann keinen Hinweis auf so etwas wie dies in der Threading-Dokumentation. Python hat eine yield
Anweisung, aber ich bin mir ziemlich sicher, dass das etwas ganz anderes ist (mit Generatoren zu tun).
Was ist hier richtig?
Ist das irgendwo dokumentiert? Ich dachte, das könnte wahr sein - ich habe es in anderen Sprachen gesehen - aber ich konnte es in den Python-Dokumenten nicht finden. –
zum Beispiel, http://docs.python.org/library/sched.html "delayfunc wird auch mit dem Argument 0 aufgerufen, nachdem jedes Ereignis ausgeführt wurde, um anderen Threads die Möglichkeit zu geben, in Multithread-Anwendungen ausgeführt zu werden." (delayfunc ist normalerweise time.sleep hier). Ich stimme zu, es wäre schöner, wenn es direkt in der Modulzeit dokumentiert wäre ;-) –
Gut versteckt! Vielen Dank! –