Windows Task Manager memiliki kemampuan untuk menunjukkan waktu CPU saat ini dari setiap proses yang berjalan di windows, apakah ada cara (tidak harus melalui Task Manager) untuk mendapatkan waktu proses dinding saat ini?
Sebagai contoh, katakanlah saya memiliki skrip yang berjalan andal selama sekitar 45 menit. Tanpa menambahkan bilah kemajuan ke skrip, apakah ada cara untuk mencari tahu berapa lama telah berjalan?
Matematika di balik ini tampaknya cukup lurus ke depan;
WallTime = CurrentWallTime - WallTimeProcessStarted.
Demikian juga, karena matematika sangat sederhana, apakah ada cara untuk mendapatkan waktu ketika suatu proses dimulai?
Jawaban:
Tentu. Total waktu yang telah berlalu tersedia melalui bagian kinerja registri dan melalui Toolhelp API. Dan tentu saja, jika Anda memiliki waktu yang telah berlalu dan waktu saat ini, Anda dapat menghitung waktu mulai.
Ada dua cara untuk mengambil informasi melalui Win32, tetapi tidak ada yang sangat sederhana. Cara yang telah didukung sejak rilis paling awal dari WinNT adalah dengan menggunakan RegQueryValueEx untuk mem-parsing terlebih dahulu daftar penghitung yang tersedia di HKEY_PERFORMANCE_DATA, lalu ambil yang Anda inginkan pada proses contoh yang menarik. Cara yang lebih baru adalah dengan menggunakan CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS), yang diperkenalkan dengan WinXP.
Mungkin ada banyak aplikasi yang bisa melakukan ini, jadi Anda mengundang daftar yang saya yakin bisa ditambahkan orang lain. Inilah cara saya melakukannya di shell C saya .
ps -s
daftar semua proses sistem. Theuptime
utilitas sampel menghitung berapa lama sistem telah naik dari waktu yang telah berlalu dilaporkan olehps -s
untuk proses Menganggur.(Waktu aktif untuk Idle hanyalah nilai ganjil yang dilaporkan oleh Win7.)
sumber
Jika Anda bersedia / dapat menggunakan Python, ada sesuatu yang disebut psutil yang mungkin akan berfungsi. Atau, Anda dapat mengunduh kode sumbernya dan melihat apa yang disebut Windows API yang digunakannya untuk memberikan informasi.
sumber