终止GObject.主回路()螺纹与主螺纹

2024-09-24 02:19:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下两条线索:

myThread = threading.Thread(target=sender.mainloop.run, daemon=True)
myThread.start()

myThread2 = threading.Thread(target=receiver.mainloop.run, daemon=True)
myThread2.start()

目标是GObject.主回路()方法。 之后,我的主程序进入无限循环。在

我的问题是,当CTRL-C终止执行时,两个线程都会引发键盘异常,但主程序不会终止。在

你知道主程序和两个线程怎么能被CTRL-C终止吗?在


Tags: runtruetarget线程threadstartsenderdaemon
1条回答
网友
1楼 · 发布于 2024-09-24 02:19:27

ctrl-c发出一个SIGINT信号,您可以在主线程中捕获该信号以进行回调。然后,您可以在回调中运行任何关闭代码,可能是sender/receiver.mainloop.quit()或其他东西。在

import threading                                                                                                      
import signal
import sys 

def loop():
  while True:
    pass

def exit(signal, frame):
  sys.exit(0)

myThread = threading.Thread(target=loop)
myThread.daemon = True
myThread.start()

myThread2 = threading.Thread(target=loop)
myThread2.daemon = True
myThread2.start()

signal.signal(signal.SIGINT, exit)

loop()  

相关问题 更多 >