Co próbuję tutaj zrobić, użyj przerwania klawiatury, aby zamknąć wszystkie bieżące wątki w programie. Jest to pominięto w wersji mojego kodu, gdzie wątek jest tworzony:Zamykanie wszystkich wątków z przerwaniem klawiatury
for i in taskDictionary:
try:
sleep(60)
thread = Thread(target = mainModule.executeThread)
thread.start()
except KeyboardInterrupt:
thread.__stop()
Sam program jest znacznie bardziej skomplikowana, co stanowi ton różnych zmiennych, które wpływają na wątki, a nawet o możliwość uruchomienia w sekwencyjnym Tryb, w którym zadania nie są nawiązywane, ale uruchamiane pojedynczo, więc mogą pojawić się problemy z tą małą odmianą, którą właśnie wywołałem. Zrobiłem to w sposób, który przyniósł 50/50 wyników. Przerwania zadziałają, ale nici nigdy nie wyjdą. Czasami kontynuowali, ale powstrzymywali wykonywanie przyszłych wątków, czasami wychodzili z ogromnym błędem dotyczącym przerwania, innym razem przerywani nie robili nic. Ostatnim razem, gdy to uruchomiłem, program zatrzymał wszelkie przyszłe wątki, ale nie zatrzymał bieżącego wątku. Czy istnieje sposób na wyjście z wątków bez wchodzenia do modułu, w którym wątek faktycznie wykonuje?
Dzięki współpracy z wątkiem możesz zabić go w dowolny sposób. Bez współpracy z nicią nie ma bezpiecznej drogi, a wszystkie drogi prowadzą do bólu. –
Wspaniała odpowiedź! Nie dokładnie to, czego szukałem, ale wystarczająco obszerne, że byłem w stanie dostosować logikę do tego, czego potrzebowałem! Dziękuję za to! – Joe
Używam wątku, ponieważ nie chcę nieskończonej pętli True. To marnuje cały czas procesora ... dosłownie. Zrobiłem coś takiego i bez snu to procesor CPU% do 100% na ** sekundy ** na raz i przy małym śnie, to tylko trochę pomaga. Czy jest jakiś sposób na zrobienie tego ** bez ** a while True? – dylnmc