Saya akan menjalankan Python selama 24/7 dalam satu loop sementara, berikut ini adalah contoh dari jenis program:
while True:
print ("me again...")
Tetapi ketika saya menjalankannya, CPU saya mencapai 100%! Tapi saya tidak mau itu karena program saya akan berjalan untuk waktu yang lama, dll. Dan saya tidak ingin CPU saya menjadi sangat panas, adakah yang bisa mencegahnya?
Jawaban:
Di akhir lingkaran Anda, miliki a
time.sleep(xx)
selama detik, atautime.sleep(x.x)
untuk mewakili sebagian detik(Harap ingat untuk mengimpor waktu perpustakaan, seperti:
import time
)Dengan xx setinggi mungkin tanpa mempengaruhi program Anda. Saat ini program Anda selalu melakukan segalanya secepat mungkin, daripada memberikan waktu bagi Pi untuk beristirahat atau melakukan sesuatu yang lain.
sumber
import time
?Kata pengantar
Pastikan Anda benar-benar perlu menjalankan tugas Anda berulang kali. Ini disebut sibuk menunggu dan hampir selalu suboptimal. Jika tugas Anda memeriksa output suatu proses, Anda bisa
subprocess.wait()
menyelesaikannya, misalnya. Jika tugas Anda adalah menunggu file atau direktori di sistem file untuk disentuh, Anda dapat menggunakan pyinotify untuk memicu kode Anda dari peristiwa filesystem yang ditangani oleh kernel.Menjawab
Ini adalah bagaimana Anda menulis infinite loop untuk menunggu yang sibuk tanpa mengkonsumsi terlalu banyak CPU.
Python 2:
Python 3:
Evaluasi
Ketika @gnibbler menguji jawaban lain , kode yang disajikan tidak boleh mengkonsumsi lebih dari 1% CPU pada mesin terbaru. Jika masih mengkonsumsi terlalu banyak CPU dengan kode payload Anda, pertimbangkan menambah waktu untuk tidur lebih jauh. Di sisi lain, kode payload mungkin perlu dioptimalkan untuk eksekusi berulang. Misalnya, Caching dapat mempercepat berjalan pada data yang tidak berubah.
Kredit
Jawaban ini mencoba dibangun berdasarkan jawaban @ user2301728 .
sumber
Saya memiliki masalah yang sama, lihat pertanyaan saya di Stack Exchange . Solusinya adalah kombinasi dari
time.sleep(0.01)
dannice
.nice
menurunkan CPU yang tersedia untuk suatu aplikasi. Ini adalah bagaimana saya memulai aplikasi:nice -n 19
.sumber
Anda juga bisa mencoba
nice -n 19 python myscript.py
.nice adalah utilitas * nix untuk mengatur prioritas CPU dari suatu tugas. 19 adalah bobot terbesar dan akibatnya merupakan pengaturan paling lambat.
sumber