У меня есть функция Powershell (которая проверяет% процессорного времени, используемого процессом), который мне нужен для запуска В моем коде Python, а не только в Powershell. Однако у меня возникли проблемы с преобразованием его для работы там.
#Powershell code to convert:
$Processname = "notepad"
$CpuCores = (Get-WMIObject Win32_ComputerSystem).NumberOfLogicalProcessors
$Samples = (Get-Counter “\Process($Processname)\% Processor Time”).CounterSamples
($Samples | Select InstanceName, @{Name=”CPU”;Expression= {[Decimal]::Round(($_.CookedValue / $CpuCores), 2)}}).CPU
#My attempt at converting it to Python:
import subprocess
processToCheck = "notepad"
process = subprocess.Popen(["powershell",
"""Invoke-Command -ScriptBlock {$CpuCores = (Get-WMIObject Win32_ComputerSystem).NumberOfLogicalProcessors | $Samples = (Get-Counter “\Process(%s)\% Processor Time”).CounterSamples ; Write-Host $Samples}"""
% (processToCheck)], stdout=subprocess.PIPE)
print process.communicate()[0]
При запуске версии кода на Python я получаю следующую ошибку:
Traceback (последний вызов последний):
Файл "", строка 3, в
% (processToCheck)], stdout = subprocess.PIPE)
Ошибка типа: недостаточно аргументов для строки формата