【发布时间】:2016-09-17 10:16:16
【问题描述】:
在 windows 中,python 3.4
import threading
l = threading.Lock()
l.acquire()
l.acquire()
触发死锁,CTRL+C 无法阻止它。您必须终止该进程。
另一方面:
import time
time.sleep(100000)
可以随时使用 CTRL+C 中断(我已经阅读了其他一些 SO 问题/答案,但效果很好)
两者都依赖于操作系统系统调用,那么为什么它不能用于锁,而它可以用于 sleep 呢?是因为time.sleep(1000000)(大致)相当于for i in range(10000000): time.sleep(0.1),因此可以被很好地中断吗?
【问题讨论】:
-
对于主线程,
time.sleep等待由信号处理程序设置的 Windows 事件。在 CPython 中不一致地支持等待此事件,最新 3.6 beta 中的事件。
标签: python windows keyboard-events