Kunne ikke afbryde den trådløse Python-konsolapp ved hjælp af tastaturet Ctrl + C på Windows
Problem
Jeg kunne ikke afbryde min trådløse Python-produktionsapp ved hjælp af Ctrl + C på Windows, den fortsætter med at køre, forsøgte både undtagelse og signalhåndtering. Her er en meget forenklet version af kode, der ikke afbryder. Enkelt tråd app ophører fint, samme som multithreaded Linux version. Kunne nogen hjælpe med dette problem? Tak på forhånd.
import threading
import time
class FooThread(threading.Thread):
stop\_flag = False
def \_\_init\_\_(self):
threading.Thread.\_\_init\_\_(self)
def run(self):
while not self.stop\_flag:
print(1)
time.sleep(1)
t = FooThread()
t.start()
try:
t.join()
except KeyboardInterrupt:
t.stop\_flag = True
t.join()
Bedste reference
Du har lavet din tråd en dæmon, men du skal også holde din 'hoved' tråd levende for at lytte efter et signal eller tastaturafbrydelse
En enkel implementering af arbejdet med et signal:
import threading
import time
import sys
import signal
class FooThread(threading.Thread):
def \_\_init\_\_(self):
threading.Thread.\_\_init\_\_(self)
def run(self):
while not self.stop\_flag:
print(1)
time.sleep(1)
stop\_flag = False
def main():
t = FooThread()
def signal\_handler(signal, frame):
print('You pressed Ctrl+C!')
t.stop\_flag = True
t.join()
signal.signal(signal.SIGINT, signal\_handler)
t.start()
while not t.stop\_flag:
time.sleep(1)
if \_\_name\_\_ == "\_\_main\_\_":
main()