【发布时间】:2011-07-17 19:11:10
【问题描述】:
我正在使用 Python 自动化一些 Windows 的东西,使用 PIL 来截取屏幕截图等。问题是,有时,在某些功能的深处,我会做一个time.sleep(1),我与之交互的 GUI 应用程序会在那一秒内冻结。这很奇怪,因为在其他地方做time.sleep 不会导致冻结。我无法准确确定导致冻结的原因和没有冻结的原因。它发生在除主线程之外的线程和主线程中。
有什么想法吗?我觉得我只需要一个“放松”功能来让 Python 停止它正在做的任何事情,让目标 UI 恢复并刷新和处理输入,然后将其带回 Python。什么功能会做到这一点? (windows Sleep 函数似乎就像 python 的 time.sleep 一样。)
【问题讨论】:
-
可能是 CPython 蹩脚的线程把事情搞砸了。
-
@schlenk 如果是这样,那么如果 CPython 的蹩脚线程能够扰乱不同进程的执行,那么它的影响力就会很大。
-
见注释部分:msdn.microsoft.com/en-us/library/ms687032(v=vs.85).aspx 如果他与 Windows 交互,可能会出现问题,因为 time.sleep() 实现使用的是 WaitForSingleObject() 而不是 Ex 版本。
标签: python windows automation ui-automation pywin32