当我从 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"])
