100% CPU vermeiden & C-Funktionen aufrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
VoLANo

Donnerstag 13. November 2003, 16:33

Hallo,

ich habe zwei Fragen:

1.) Wenn ich längere Schleifen laufen lasse, habe ich 100% Prozessorlast. Wie kann ich dies verhindern?
2.) Ich möchte unter Linux gerne eine C-Funktion über Python aufrufen. Ist dies irgendwie möglich? Wenn ja, wie?

Grüße,
VoLANo
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Donnerstag 13. November 2003, 18:18

Hi VoLANo,

zu 1.: Da gibt es mehrere Möglichkeiten, 1. Du kannst zwischendurch mal sleep aufrufen, was aber Deine Schleife ausbremsen dürfte, ansonst kannst Du noch Dein Pythonscript mit einem nice -15 script.py starten, dann wird das Script nur dann ausgeführt, wenn keine wichtigeren Sachen zu machen sind, zwar geht auch dann die Prozessorauslastung hoch, aber es wird eben nur die ohnehin freie Prozassorkapazität verwendet.

zu 2.: Dazu musst du in C eine Interfacefunktion schreiben, welche die Python-Argumente in C-Datentypen konvertiert, die Prozedur aufruft und dann das Ergebnis wieder in ein Pythonobjekt wandelt und an die aufrufende Funktion zurückgibt. Das ganze wird auf der Pythonwebseite unter http://www.python.org/doc/faq/extending.html beschrieben. Oft sind aber die Funktionen/Methoden aus Python um einiges schneller als selbe gecodete C-Sachen.


Gruß

Dookie
Benutzeravatar
strogon14
User
Beiträge: 58
Registriert: Sonntag 23. Februar 2003, 19:34
Wohnort: Köln
Kontaktdaten:

Donnerstag 20. November 2003, 02:33

zu 2) Oder schau Dir mal das Modul 'ctypes' an. Google ist dein Freund.

Chris
Antworten