Będę miał Python działający 24/7 w pętli while, oto przykład tego rodzaju programu:
while True:
print ("me again...")
Ale kiedy go uruchamiam, mój procesor przechodzi w 100%! Ale nie chcę tego, ponieważ mój program będzie działał przez długi czas itp. I nie chcę, aby mój procesor był bardzo gorący, czy w każdym razie mogę temu zapobiec?
Odpowiedzi:
Na końcu pętli masz
time.sleep(xx)
przez kilka sekund lubtime.sleep(x.x)
do reprezentowania częściowych sekund(Pamiętaj, aby zaimportować czas z biblioteki, w ten sposób:
import time
)Ponieważ xx jest tak wysoki, jak to możliwe, bez negatywnego wpływu na twój program. W tej chwili twój program zawsze robi wszystko tak szybko, jak to możliwe, zamiast dać czas Pi na odpoczynek lub zrobienie czegoś innego.
źródło
import time
?Przedmowa
Upewnij się, że naprawdę musisz wielokrotnie uruchamiać swoje zadanie. Nazywa się to zajęciem oczekiwania i prawie zawsze nieoptymalnym. Jeśli Twoim zadaniem jest sprawdzenie wyników podprocesu, możesz
subprocess.wait()
na przykład po prostu zakończyć. Jeśli Twoim zadaniem jest poczekanie na dotknięcie pliku lub katalogu w systemie plików, możesz użyć pyinotify aby uruchomić kod ze zdarzenia systemu plików obsługiwanego przez jądro.Odpowiedź
W ten sposób piszesz nieskończoną pętlę dla zajętego oczekiwania bez zużywania zbyt dużego procesora.
Python 2:
Python 3:
Ocena
Jak przetestowano @gnibbler w innej odpowiedzi , prezentowany kod nie powinien zużywać więcej niż 1% procesora na najnowszych komputerach. Jeśli nadal zużywa zbyt dużo procesora z kodem ładunku, rozważ wydłużenie czasu spania jeszcze bardziej. Z drugiej strony kod ładunku może wymagać optymalizacji w celu powtórnego wykonania. Na przykład buforowanie może przyspieszyć działanie na niezmienionych danych.
Kredyty
Ta odpowiedź opiera się na odpowiedzi @ user2301728 .
źródło
Miałem ten sam problem, patrz moje pytanie na Stack Exchange . Rozwiązaniem było połączenie
time.sleep(0.01)
inice
.nice
zmniejsza procesor dostępny dla aplikacji. W ten sposób mogę uruchomić aplikację:nice -n 19
.źródło
Możesz także spróbować
nice -n 19 python myscript.py
.nice to narzędzie * nix do ustawiania priorytetu CPU zadania. 19 jest największą wagą, a zatem najwolniejszym ustawieniem.
źródło