当我从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上不会“以相同的方式存在”)
答案 0 :(得分:0)
我没有看到任何此类延迟。它非常活泼。 (这也取决于您的脚本实际执行的操作。)尝试使用call
:
from subprocess import call
call(["powershell", "sample.ps1"])
答案 1 :(得分:0)
PowerShell默认加载用户的个人资料。使用-NoProfile
参数关闭该行为:
import subprocess
p = subprocess.Popen([POWERSHELL, '-NoProfile', '-File', 'sample.ps1'], stdout=subprocess.STDOUT)
d = p.stdout.read()