【发布时间】:2015-09-18 19:07:06
【问题描述】:
我有一个这样的python程序:
from threading import Thread
def foo():
while True:
blocking_function() #Actually waiting for a message on a socket
def run():
Thread(target=foo).start()
run()
此程序不会以KeyboardInterrupt 终止,因为主线程在运行foo() 的线程有机会终止之前退出。我尝试在调用run() 之后只运行while True 循环来保持主线程处于活动状态,但这也不会退出程序(我猜blocking_function() 只是阻止线程运行,等待消息)。还尝试在主线程中捕获 KeyboardInterrupt 异常并调用 sys.exit(0) - 结果相同(我实际上希望它会杀死运行 foo() 的线程,但显然它没有)
现在,我可以简单地将blocking_function() 的执行超时,但这并不好玩。我可以在KeyboardInterrupt 或类似的网站上取消阻止它吗?
主要目标:在Ctrl+C 上终止线程阻塞的程序
【问题讨论】:
标签: python multithreading