为什么从Python运行PowerShell脚本似乎会延迟?
当我从Python启动PowerShell脚本时,延迟似乎约为45秒,我不知道为什么 我正在尝试从Python脚本运行PowerShell脚本(访问某些仅对PowerShell可用的API) 我已经尝试了很多排列,与使用相同的命令行从命令提示符运行脚本相比,所有排列都会产生约45秒的延迟 例如-sample.ps1可能会说:为什么从Python运行PowerShell脚本似乎会延迟?,python,powershell,Python,Powershell,当我从Python启动PowerShell脚本时,延迟似乎约为45秒,我不知道为什么 我正在尝试从Python脚本运行PowerShell脚本(访问某些仅对PowerShell可用的API) 我已经尝试了很多排列,与使用相同的命令行从命令提示符运行脚本相比,所有排列都会产生约45秒的延迟 例如-sample.ps1可能会说: echo foo import subprocess p = subprocess.Popen([POWERSHELL, '-File', 'sample.ps1'],
echo foo
import subprocess
p = subprocess.Popen([POWERSHELL, '-File', 'sample.ps1'], stdout=subprocess.STDOUT)
d = p.stdout.read()
runner.py可能会说:
echo foo
import subprocess
p = subprocess.Popen([POWERSHELL, '-File', 'sample.ps1'], stdout=subprocess.STDOUT)
d = p.stdout.read()
直接运行.ps1脚本速度很快,通过runner.py(Python2.7,64位机器上32位)运行该脚本会导致45秒的延迟
如果我使用“os.system”或Twisted的内置过程工具,也会发生完全相同的情况。所以我怀疑Python解释器和Powershell解释器之间存在某种微妙的交互,可能与控制台窗口的创建或stdin/out/err流的处理有关?(我知道这在Windows上并不以同样的方式“真正存在”)我没有看到任何这样的延迟。它相当快。(这也取决于脚本实际执行的操作。)尝试使用
调用:
from subprocess import call
call(["powershell", "sample.ps1"])
我看不到任何此类延误。它相当快。(这也取决于脚本实际执行的操作。)尝试使用调用:
from subprocess import call
call(["powershell", "sample.ps1"])
默认情况下,PowerShell将加载用户的配置文件。使用-NoProfile
参数关闭该行为:
import subprocess
p = subprocess.Popen([POWERSHELL, '-NoProfile', '-File', 'sample.ps1'], stdout=subprocess.STDOUT)
d = p.stdout.read()
默认情况下,PowerShell将加载用户的配置文件。使用-NoProfile
参数关闭该行为:
import subprocess
p = subprocess.Popen([POWERSHELL, '-NoProfile', '-File', 'sample.ps1'], stdout=subprocess.STDOUT)
d = p.stdout.read()
是否有可能加载的配置文件会延迟启动?否。没有配置文件加载。是否有可能加载的配置文件会延迟启动?否。没有配置文件加载..call()没有帮助。我需要阅读脚本输出。你用.stdout.read()试过了吗?.call()没有帮助。我需要阅读脚本输出。你用.stdout.read()试过了吗?