ich hab in meinem Programm den concurrent.futures.ThreadPoolExecutor verwendet um loops auszuführen, und möchte diese beim Beenden vom Programm abbrechen, da das Programm sonst nicht beendet.
Code: Alles auswählen
>>> from concurrent.futures import ThreadPoolExecutor as TPE
>>> def loop():
while True:
pass
>>> f = threadpool.submit(loop)
>>> f.cancel()
False
>>> f.running()
True
>>> threadpool.shutdown(False)
>>> f.running()
True
>>>
Und einen loop zu bauen der auf eine globale variable prüft kann ich auch nicht benutzen, weil ich im loop socket.recv aufrufe und das nicht unterbricht.
Code: Alles auswählen
>>> running = True
>>> def loop():
while running:
sock.recv(1024) # läuft nicht weiter, bis die bytes empfangen sind.
Alternativ: gibt es eine Möglichkeit sock.recv und sock.accept abzubrechen?
Oder sollte ich in dem Programmteil lieber das threading modul verwenden?