Windows 7 / Vista进程pipe理 – 如何在长时间空闲时间后启动外部程序?

这是这个问题的后续行动。

基本上,我有一个Python脚本应该启动另一个程序(.exe)通过一个计时器约2-6小时后。 一切工作正常,只要我testing一个短暂倒计时或只要计算机是“活跃”(= userinput之前,屏幕上)之前定时器到期或只要没有其他程序在同一时间工作(一个Excel VBA脚本在我的情况)。

Windows 7上,长时间倒计时和运行Excel,外部程序不会打开。 没有任何错误消息和任何其他(python内部)命令之后,他们应该执行。

我使用x=subprocess.Popen([program,args],flags)命令,并尝试几乎所有可能的标志(Shell,buffersize,creationflags,stdout等)和选项(调用),但其行为总是如上所述。

现在,当我尝试通过VBA打开外部程序时,我注意到了一个类似的行为,所以我不认为它是一个特定于Python的,而是一个Windows特定的问题。 此外,我尝试了与Windows Vista的另一台PC上,它出乎意料地(如果这是重要的64位)。

我已经尝试通过SetThreadExecutionState提高进程优先级或防止空闲状态,并禁用了所有我知道的节能function,但目前为止没有任何改变。

有没有人有一个想法? 非常感谢,我慢慢地感到沮丧…

Solutions Collecting From Web of "Windows 7 / Vista进程pipe理 – 如何在长时间空闲时间后启动外部程序?"

考虑到这里所说的问题后,我认为一个可行的方法是使用很多短暂的暂停而不是长时间的暂停,所以程序总是处于活动状态,但是可能会导致更高的内存使用率。

 def wait(sec,sleeptime = 0): import time endsecs = time.time() + sec while True: if endsecs <= time.time(): return None if sleeptime != 0: time.sleep(sleeptime) 

只是一个猜测,没有什么确定的,没有时间来验证。