90-100% CPU Last

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Wenn ich folgendes Programm ausfuehre sehe ich diese nette Ausgabe bei "top":
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6962 name 15 0 47608 10m 5968 S 90 0.5 427:57.84 python
Das 90% CPU schwankt, aber bleibt andauerd eindeutig zu hoch, das seltsame ist das es mein System nicht richtig beeintraechtigt. Ich verwende Ubuntu Edgy Eft auf einem Intel Pentium 4 mit 3 Ghz.
Wie kann ich das verhindern?

Danke im Vorraus!
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Benutzeravatar
blumi
User
Beiträge: 8
Registriert: Mittwoch 31. Januar 2007, 11:30
Wohnort: Erfurt

Also ich kann mir jetzt Dein Programm nicht ansehen (der Link bringt mir einen HTTP Error 500 ?!), aber ich habe auch einen solchen Effekt bemerkt, wenn ich in einer Schleife auf einen Event warte (readkey() ließt ein Byte aus einem Puffer eines externen Keypads aus und liefert "", wenn keine Taste gedrückt wurde):

Code: Alles auswählen

tKey = ""
while (tKey == ""):
    tKey == readkey()
    if (tKey == "X"):
        break
    time.sleep(0.01)
Wenn ich die sleep()-Anweisung weg lasse, geht die Prozessorlast auf 100%, während auf einen Tastendruck gewartet wird. Als würde der Interpreter heiß laufen, wenn eine Schleife zu schnell wiederholt wird.

Blumi
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

blumi hat geschrieben:Als würde der Interpreter heiß laufen, wenn eine Schleife zu schnell wiederholt wird.
Nicht der Interpreter läuft heiß, sondern die CPU.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Das habe ich in einem Tkinter-Programm auch schon erlebt in einer Schleife, die Eingaben zeichenweise vom Netzwerk holt. Ich wurde zuerst aufmerksam, weil der CPU-Lüfter beim Aufruf des Scripts regelmäßig startete. Gelöst habe ich es auch mit einer sleep()-Anweisung.
MfG
HWK
gorba
User
Beiträge: 100
Registriert: Freitag 28. Juli 2006, 14:58

hmm, dass heisst doch eigentlich, dass der Prozess den CPU blockiert. Das sollte eigentlich nicht passieren, da der CPU ein sheduling modell hat.

Es is allerdings sicher sinnvoll, solche Prozesse Blocking-Sleep zu stellen, die dann der den CPU wider "geweckt" werden, da so auch andere Prozesse rechenzeit bekommen.
Sinn und Unsinn meiner Worte kommt nie von ungefähr. Das nämlich bin ich, nicht mehr.
Antworten