【发布时间】:2023-03-08 04:20:01
【问题描述】:
这是that问题的后续。
基本上,我有一个 python 脚本,它应该在大约 2-6 小时后通过计时器启动另一个程序 (.exe)。只要我用短暂的倒计时测试它,或者只要在计时器到期之前计算机处于“活动状态”(=用户输入之前,屏幕打开),或者只要没有其他程序同时工作(一个在我的例子中是 Excel VBA 脚本)。
在 Windows 7 上,长时间倒计时和运行 Excel 时,外部程序无法打开。没有任何错误消息和任何其他(python 内部)命令按应执行的方式执行。
我使用 x=subprocess.Popen([program,args],flags) 命令并尝试了几乎所有可能的标志(Shell、buffersize、creationflags、stdout 等)和替代方案(调用),但它的行为始终如上文所述。
现在我在尝试通过 VBA 打开外部程序时注意到了类似的行为,所以我不认为这是特定于 Python 的问题,而是特定于 Windows 的问题。此外,我在另一台装有 Windows Vista 的 PC 上进行了尝试,结果令人惊讶(如果重要的话,都是 64 位)。
我已经尝试通过SetThreadExecutionState 提高进程优先级或防止空闲状态,并禁用了我知道的所有节能功能,但到目前为止没有任何改变。
有人有想法吗?非常感谢,我慢慢地感到沮丧......
【问题讨论】:
-
你在处理excel吗?您是否考虑过在您的 python 脚本中移动该功能?使用开放式办公室?或者,使用 COM 连接到 excel?
-
@Spencer no Excel vba 宏没有以任何方式与我的脚本连接(除了它必须同时运行,这工作正常)。我还尝试通过 VBA 在“excel-timer”之后打开外部程序并遇到了同样的问题...... Python/VBA“内部”命令在各自的计时器之后执行,但无法打开外部程序...
-
您是否尝试过迁移到新机器?也许您系统上的某些东西很糟糕。
-
@Spencer 不要这么认为,到目前为止,我尝试了 3 台机器,2 台不同的笔记本电脑(Windows 7、32 位 + 64 位)和一台装有 Vista 的 PC - 在两台笔记本电脑上同样的问题,它只适用于带有 Vista 的 PC ......所以我确信它与 Windows 进程管理/节能/可能是一些新的 Windows 7 功能有关......
-
这听起来很可能令人沮丧。但这听起来也与您尝试子处理的可执行文件有关。将该功能迁移到 python 脚本中有多难?除此之外,请查看winpdb。看看是否可以将调试器挂接到脚本中,然后在子进程调用之前设置一个断点。
标签: python windows winapi windows-7 process