簡體   English   中英

psutil 中的 cpu-percent 為每個進程返回 0.0

[英]cpu-percent in psutil returns 0.0 for every process

我受到了一個類似的 github 項目的啟發,嘗試制作一個 wordcloud 壁紙生成器。 我沒有太多經驗,這似乎是一個很好的初學者項目。

現在我正在嘗試從psutil獲得一些可用的輸出,它似乎確實有效,但有些地方不對。

import wordcloud # For wordcloud generation
import psutil # for the linux process data and cpu usage

#Creates a list to store the output of procInfo
theOneProcessList = list()

# Lists every process and it's cpu usage and appends it to theOneProcessList
for proc in psutil.process_iter(attrs=None, ad_value=None):
    procInfo = proc.as_dict(attrs=['name', 'cpu_percent'])
    theOneProcessList.append(procInfo)
print(theOneProcessList)

輸出最終是一個數組,其中列出了 linux 中的每個進程及其相應的 cpu 使用情況。 像這樣的東西:

[{'name': 'systemd', 'cpu_percent': 0.0}, {'name': 'kthreadd', 'cpu_percent': 0.0}, {'name': 'rcu_gp', 'cpu_percent': 0.0}, {'name': 'rcu_par_gp', 'cpu_percent': 0.0}, {'name': 'kworker/0:0H-kblockd', 'cpu_percent': 0.0}, {'name': 'mm_percpu_wq', 'cpu_percent': 0.0}, {'name': 'ksoftirqd/0', 'cpu_percent': 0.0}, {'name': 'rcu_preempt', 'cpu_percent': 0.0}, {'name': 'rcu_sched', 'cpu_percent': 0.0}, {'name': 'rcu_bh', 'cpu_percent': 0.0}, {'name': 'rcuc/0', 'cpu_percent': 0.0}, {'name': 'rcub/0', 'cpu_percent': 0.0}, {'name': 'migration/0', 'cpu_percent': 0.0}, {'name': 'idle_inject/0', 'cpu_percent': 0.0}, {'name': 'cpuhp/0', 'cpu_percent': 0.0}, {'name': 'cpuhp/1', 'cpu_percent': 0.0}, {'name': 'idle_inject/1', 'cpu_percent': 0.0}, {'name': 'migration/1', 'cpu_percent': 0.0}, {'name': 'rcuc/1', 'cpu_percent': 0.0}, {'name': 'ksoftirqd/1', 'cpu_percent': 0.0}, {'name': 'kworker/1:0H-kblockd', 'cpu_percent': 0.0}, {'name': 'cpuhp/2', 'cpu_percent': 0.0}, {'name': 'idle_inject/2', 'cpu_percent': 0.0}, {'name': 'migration/2', 'cpu_percent': 0.0}, {'name': 'rcuc/2', 'cpu_percent': 0.0}, {'name': 'ksoftirqd/2', 'cpu_percent': 0.0}, {'name': 'kworker/2:0H-kblockd', 'cpu_percent': 0.0}, {'name': 'cpuhp/3', 'cpu_percent': 0.0}, {'name': 'idle_inject/3', 'cpu_percent': 0.0}, {'name': 'migration/3', 'cpu_percent': 0.0}, {'name': 'rcuc/3', 'cpu_percent': 0.0}, {'name': 'ksoftirqd/3', 'cpu_percent': 0.0}, {'name': 'kworker/3:0H-kblockd', 'cpu_percent': 0.0}, {'name': 'kdevtmpfs', 'cpu_percent': 0.0}, {'name': 'netns', 'cpu_percent': 0.0}, {'name': 'rcu_tasks_kthre', 'cpu_percent': 0.0}, {'name': 'kauditd', 'cpu_percent': 0.0}, {'name': 'kworker/2:1-mm_percpu_wq', 'cpu_percent': 0.0}, {'name': 'kworker/3:1-events', 'cpu_percent': 0.0}, {'name': 'khungtaskd', 'cpu_percent': 0.0}, {'name': 'oom_reaper', 'cpu_percent': 0.0}, {'name': 'writeback', 'cpu_percent': 0.0}, {'name': 'kcompactd0', 'cpu_percent': 0.0}, {'name': 'ksmd', 'cpu_percent': 0.0}, {'name': 'khugepaged', 'cpu_percent': 0.0}, {'name': 'crypto', 'cpu_percent': 0.0}, {'name': 'kintegrityd', 'cpu_percent': 0.0}, {'name': 'kblockd', 'cpu_percent': 0.0}, {'name': 'edac-poller', 'cpu_percent': 0.0}, {'name': 'devfreq_wq', 'cpu_percent': 0.0}, {'name': 'watchdogd', 'cpu_percent': 0.0}, {'name': 'kswapd0', 'cpu_percent': 0.0}, {'name': 'kthrotld', 'cpu_percent': 0.0}, {'name': 'irq/42-pciehp', 'cpu_percent': 0.0}, {'name': 'acpi_thermal_pm', 'cpu_percent': 0.0}, {'name': 'nvme-wq', 'cpu_percent': 0.0}, {'name': 'nvme-reset-wq', 'cpu_percent': 0.0}, {'name': 'nvme-delete-wq', 'cpu_percent': 0.0}, {'name': 'ipv6_addrconf', 'cpu_percent': 0.0}, {'name': 'kstrp', 'cpu_percent': 0.0}, {'name': 'charger_manager', 'cpu_percent': 0.0}, {'name': 'ata_sff', 'cpu_percent': 0.0}, {'name': 'scsi_eh_0', 'cpu_percent': 0.0}, {'name': 'scsi_tmf_0', 'cpu_percent': 0.0}, {'name': 'scsi_eh_1', 'cpu_percent': 0.0}, {'name': 'scsi_tmf_1', 'cpu_percent': 0.0}, {'name': 'kworker/1:1H-kblockd', 'cpu_percent': 0.0}, {'name': 'kworker/0:1H-kblockd', 'cpu_percent': 0.0}, {'name': 'kworker/2:1H-kblockd', 'cpu_percent': 0.0}, {'name': 'kworker/u9:0-hci0', 'cpu_percent': 0.0}, {'name': 'jbd2/sda6-8', 'cpu_percent': 0.0}, {'name': 'ext4-rsv-conver', 'cpu_percent': 0.0}, {'name': 'kworker/3:1H-kblockd', 'cpu_percent': 0.0}, {'name': 'systemd-journald', 'cpu_percent': 0.0}, {'name': 'lvmetad', 'cpu_percent': 0.0}, {'name': 'iprt-VBoxWQueue', 'cpu_percent': 0.0}, {'name': 'iprt-VBoxTscThr', 'cpu_percent': 0.0}, {'name': 'systemd-udevd', 'cpu_percent': 0.0}, {'name': 'irq/49-mei_me', 'cpu_percent': 0.0}, {'name': 'cfg80211', 'cpu_percent': 0.0}, {'name': 'kmemstick', 'cpu_percent': 0.0}, {'name': 'rtsx_usb_ms_1', 'cpu_percent': 0.0}, {'name': 'i915/signal:0', 'cpu_percent': 0.0}, {'name': 'i915/signal:1', 'cpu_percent': 0.0}, {'name': 'i915/signal:2', 'cpu_percent': 0.0}, {'name': 'i915/signal:6', 'cpu_percent': 0.0}, {'name': 'kworker/u9:1-hci0', 'cpu_percent': 0.0}, {'name': 'nv_queue', 'cpu_percent': 0.0}, {'name': 'nv_queue', 'cpu_percent': 0.0}, {'name': 'nvidia-modeset/', 'cpu_percent': 0.0}, {'name': 'nvidia-modeset/', 'cpu_percent': 0.0}, {'name': 'irq/53-nvidia', 'cpu_percent': 0.0}, {'name': 'nvidia', 'cpu_percent': 0.0}, {'name': 'nv_queue', 'cpu_percent': 0.0}, {'name': 'systemd-timesyncd', 'cpu_percent': 0.0}, {'name': 'bluetoothd', 'cpu_percent': 0.0}, {'name': 'dbus-daemon', 'cpu_percent': 0.0}, {'name': 'systemd-logind', 'cpu_percent': 0.0}, {'name': 'avahi-daemon', 'cpu_percent': 0.0}, {'name': 'crond', 'cpu_percent': 0.0}, {'name': 'ModemManager', 'cpu_percent': 0.0}, {'name': 'NetworkManager', 'cpu_percent': 0.0}, {'name': 'avahi-daemon', 'cpu_percent': 0.0}, {'name': 'sddm', 'cpu_percent': 0.0}, {'name': 'polkitd', 'cpu_percent': 0.0}, {'name': 'Xorg', 'cpu_percent': 0.0}, {'name': 'wpa_supplicant', 'cpu_percent': 0.0}, {'name': 'udisksd', 'cpu_percent': 0.0}, {'name': 'upowerd', 'cpu_percent': 0.0}, {'name': 'sddm-helper', 'cpu_percent': 0.0}, {'name': 'systemd', 'cpu_percent': 0.0}, {'name': '(sd-pam)', 'cpu_percent': 0.0}, {'name': 'appimagelauncherfs', 'cpu_percent': 0.0}, {'name': 'appimagelauncherd', 'cpu_percent': 0.0}, {'name': 'kwalletd5', 'cpu_percent': 0.0}, {'name': 'startkde', 'cpu_percent': 0.0}, {'name': 'dbus-daemon', 'cpu_percent': 0.0}, {'name': 'start_kdeinit', 'cpu_percent': 0.0}, {'name': 'kdeinit5', 'cpu_percent': 0.0}, {'name': 'klauncher', 'cpu_percent': 0.0}, {'name': 'kded5', 'cpu_percent': 0.0}, {'name': 'kaccess', 'cpu_percent': 0.0}, {'name': 'kwrapper5', 'cpu_percent': 0.0}, {'name': 'ksmserver', 'cpu_percent': 0.0}, {'name': 'kglobalaccel5', 'cpu_percent': 0.0}, {'name': 'dconf-service', 'cpu_percent': 0.0}, {'name': 'kwin_x11', 'cpu_percent': 0.0}, {'name': 'baloo_file', 'cpu_percent': 0.0}, {'name': 'krunner', 'cpu_percent': 0.0}, {'name': 'plasmashell', 'cpu_percent': 0.0}, {'name': 'polkit-kde-authentication-agent-1', 'cpu_percent': 0.0}, {'name': 'xembedsniproxy', 'cpu_percent': 0.0}, {'name': 'kactivitymanagerd', 'cpu_percent': 0.0}, {'name': 'gmenudbusmenuproxy', 'cpu_percent': 0.0}, {'name': 'kdeconnectd', 'cpu_percent': 0.0}, {'name': 'msm_kde_notifier', 'cpu_percent': 0.0}, {'name': 'octopi-notifier', 'cpu_percent': 0.0}, {'name': 'pulseaudio', 'cpu_percent': 0.0}, {'name': 'rtkit-daemon', 'cpu_percent': 0.0}, {'name': 'AppRun', 'cpu_percent': 0.0}, {'name': 'python3', 'cpu_percent': 0.0}]

但由於某種原因,每個進程的CPU 使用率始終為0 這對 wordcloud 不起作用。 它們的大小差異因 cpu 使用值而異。

難道我做錯了什么? 有沒有一種替代方法可以真正正確地做到這一點?

CPU 百分比的計算方法是將兩次調用之間使用的 CPU 時間差除以經過的時間。 因此,它無法計算第一次調用的百分比,因為還沒有時差。

所以調用一次,稍等片刻,然后再調用。

import psutil # for the linux process data and cpu usage
import time # for sleep()

# Initial call to get base values
_ = list(psutil.process_iter()
# Delay so it can calculate a difference.
time.sleep(1)

#Creates a list to store the output of procInfo
theOneProcessList = list()

# Lists every process and it's cpu usage and appends it to theOneProcessList
for proc in psutil.process_iter(attrs=None, ad_value=None):
    procInfo = proc.as_dict(attrs=['name', 'cpu_percent'])
    theOneProcessList.append(procInfo)
print(theOneProcessList)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM