作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
谁能解释一下 interrupt_main() 方法在 Python 中是如何工作的?
我有这段 Python 代码:
import time, thread
def f():
time.sleep(5)
thread.interrupt_main()
def g():
thread.start_new_thread(f, ())
time.sleep(10)
print time.time()
try:
g()
except KeyboardInterrupt:
print time.time()
当我尝试运行它时,它会给我以下输出:
1380542215.5
# ... 10 seconds break...
1380542225.51
但是,如果我手动中断程序(CTRL-C),线程会被正确中断:
1380542357.58
^C1380542361.49
为什么在第一个示例中线程中断仅在 10 秒(而不是 5 秒)后发生?
我找到了一个 ancient thread n Python mailing list ,但它几乎没有解释任何东西。
最佳答案
raise KeyboardInterrupt
不会中断 time.sleep()
。前者完全在 python 解释器内部处理,后者调用操作系统函数。
因此,在您的情况下,键盘中断已得到处理,但仅当 time.sleep()
完成其系统调用时。
试试这个:
def g():
thread.start_new_thread(f, ())
for _ in range(10):
time.sleep(1)
关于Python 主线程中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19093899/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!