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:
from __future__ import print_function
from __future__ import division
import time
while True:
range(10000) # some payload code
print("Me again") # some console logging
time.sleep(0.2) # sane sleep time of 0.1 seconds
Python 3:
import time
while True:
range(10000) # some payload code
print("Me again") # some console logging
time.sleep(0.2) # sane sleep time of 0.1 seconds
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 .