Skip to main content
 首页 » 编程设计

python之为什么从 Python 运行 PowerShell 脚本似乎有延迟

2025年05月04日10pengyingh

当我从 Python 启动 PowerShell 脚本时,延迟似乎大约为 45 秒,我不明白为什么。

我正在尝试从 Python 脚本运行 PowerShell 脚本(访问一些仅适用于 PowerShell 的 API)。

我尝试了很多排列组合,与使用相同命令行从命令提示符运行脚本相比,所有排列组合都会产生约 45 秒的延迟。

例如 - sample.ps1 可能会说:

echo foo 

runner.py 可能会说:

import subprocess 
p = subprocess.Popen([POWERSHELL, '-File', 'sample.ps1'], stdout=subprocess.STDOUT) 
d = p.stdout.read() 

直接运行 .ps1 脚本很快,通过 runner.py(Python 2.7,64 位机器上的 32 位)运行它会产生 45 秒的延迟。

如果我使用“os.system”或 Twisted 的内置处理工具,则会发生完全相同的事情。所以我怀疑这是 Python 解释器和 Powershell 解释器之间的一些微妙交互,可能与控制台窗口的创建或 stdin/out/err 流的处理有关? (我知道在 Windows 上不会以相同的方式“真正存在”)

请您参考如下方法:

我没有看到任何此类延迟。它非常活泼。 (这也取决于您的脚本实际执行的操作。)尝试使用 call:

from subprocess import call 
call(["powershell", "sample.ps1"])