第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Python:將命令輸出存儲(chǔ)在變量中

Python:將命令輸出存儲(chǔ)在變量中

Go
POPMUISE 2023-02-22 15:06:14
我想使用該工具測(cè)量命令的時(shí)間和 CPU 使用率/usr/bin/time。但是當(dāng)我這樣做時(shí)os.popen( "/usr/bin/time -f \t%E MM:ss:mm ls -R" ).read()它也存儲(chǔ)ls -R. 我該怎么做才能只存儲(chǔ)/usr/bin/time輸出?我也嘗試過,subprocess但它也不起作用。out = subprocess.Popen(['/usr/bin/time', '-f', '"\t%E MM:ss:mm"', 'ls', '-R'],        stdout=subprocess.PIPE,        stderr=subprocess.STDOUT)stdout,stderr = out.communicate()print( stdout )在終端中運(yùn)行命令如下所示:輸入:/usr/bin/time -f "\t%E M:ss:mm, \t%P CPU" ls -R    輸出:.:Dockerfile  input  output  README.md  src  Test.py./input:links.txt  raw  yuv./input/raw:./input/yuv:./output:./src:InstallEncoderArm.sh  InstallEncoderx86.sh  RunTests.py    0:00.00 M:ss:mm,    100% CPU
查看完整描述

3 回答

?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊

您需要將命令的輸出發(fā)送到/dev/null


>/usr/bin/time -f "\t%E real,\t%U user,\t%S sys" ls -Fs >/dev/null

        0:00.01 real,   0.00 user,      0.01 sys

這里的復(fù)雜性是我們想要丟棄命令輸出但存儲(chǔ)命令的輸出/usr/bin/time。


將 的輸出存儲(chǔ)usr/bin/time為變量稍微復(fù)雜一些,因?yàn)?usr/bin/time它在 stderr 上顯示它的輸出。所以我們需要將命令輸出發(fā)送到dev/null,然后將 time 的輸出從 stderr 重定向并捕獲到一個(gè)變量中。假設(shè)您可能想要執(zhí)行比 ls -R 更復(fù)雜的命令,我們通常會(huì)調(diào)用 sh -c 'exec ' 這將在未來為您提供更多選擇。因此:


result=$(/usr/bin/time -f "\t%E MM:ss:mm" sh -c 'exec ls -R >/dev/null' 2>&1 tee)

執(zhí)行輸出:


>result=$(/usr/bin/time -f "\t%E MM:ss:mm" sh -c 'exec ls -R >/dev/null' 2>&1 tee

); echo $result

0:20.60 MM:ss:mm

在這里我們將結(jié)果捕獲為環(huán)境變量


>echo $result

0:20.60 MM:ss:mm

最后我們到達(dá):


os.popen("/usr/bin/time -f '%E MM:ss:mm' sh -c 'exec ls -R >/dev/null' 2>&1 tee").read()

執(zhí)行輸出:


>python3

Python 3.6.9 (default, Apr 18 2020, 01:56:04)

[GCC 8.4.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import os

>>> os.popen("/usr/bin/time -f '%E MM:ss:mm' sh -c 'exec ls -R >/dev/null' 2>&1 tee").read()

'0:19.89 MM:ss:mm\n'

希望以上內(nèi)容為您指明了正確的方向。


查看完整回答
反對(duì) 回復(fù) 2023-02-22
?
慕姐8265434

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊

它適用于subprocess但注意/usr/bin/time使用 stderr


import subprocess


proc = subprocess.Popen(["/usr/bin/time -f \"\t%E M:ss:mm, \t%P CPU\" ls -R"], 

stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

(out, err) = proc.communicate()

print("program output:", err.decode("utf-8"))

輸出:


program output:         0:00.00 M:ss:mm,        100% CPU


查看完整回答
反對(duì) 回復(fù) 2023-02-22
?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

這段代碼在 python 2.7 上對(duì)我有用


import os

from datetime import datetime

CPU_Pct="Cpu Usage :"+str(round(float(os.popen('''grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage }' ''').readline()),2))+ "  time:" + datetim$


print(CPU_Pct)

輸出會(huì)像


5.74  time:2020-07-07 10:53:22

如果你也想獲得內(nèi)存的使用,你可以將這一行添加到你的代碼中


tot_m, used_m, free_m = map(int, os.popen('free -t -m').readlines()[-1].split()[1:])

最終代碼可能是這樣的:


import os

from datetime import datetime

CPU="|| CPU Usage :"+str(round(float(os.popen('''grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage }' ''').readline()),2))

Time =  "||  time:" + datetime.now().strftime('%H:%M:%S')

tot_m, used_m, free_m = map(int, os.popen('free -t -m').readlines()[-1].split()[1:])

Memory ="|| memory :"+ str(used_m) +"/"+str(tot_m)

print(Time + CPU+Memory)

這是輸出:


||  time:11:02:33|| CPU Usage :5.74|| memory :13847/37529


查看完整回答
反對(duì) 回復(fù) 2023-02-22
  • 3 回答
  • 0 關(guān)注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)