Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么从Python运行PowerShell脚本似乎会延迟?_Python_Powershell - Fatal编程技术网

为什么从Python运行PowerShell脚本似乎会延迟?

为什么从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'],

当我从Python启动PowerShell脚本时,延迟似乎约为45秒,我不知道为什么

我正在尝试从Python脚本运行PowerShell脚本(访问某些仅对PowerShell可用的API)

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

例如-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()试过了吗?