Seite 1 von 1
ionice?
Verfasst: Freitag 18. Dezember 2009, 10:34
von CM
Hoi,
Ich möchte gerne einige Skripte (keine echten Programme!) von mir ionice setzen. Gibt es eine elegantere Möglichkeit als:
?
Leider habe ich in den Docs nichts Entsprechendes finden können.
Danke,
Christian
Verfasst: Freitag 18. Dezember 2009, 10:42
von lunar
subprocess.
Verfasst: Freitag 18. Dezember 2009, 10:48
von CM
Ja, ok. Ich sollte vielleicht formulieren: Ist man gezwungen auf OS-abhängige Programme zurückzugreifen oder gibt es etwas pythoneigenes?
Verfasst: Freitag 18. Dezember 2009, 10:59
von Masaru
Mhm, also mir ist noch keine Python-Lib bekannt, die ein entsprechendes OS-übergreifendes Priority-Changing unterstützen würde.
Unter
Windows kann man via
subprocess (beim starten) oder
win32process.SetPriorityClass (zur Laufzeit) auf die Priorität einwirken, während Du unter
Unix-Systemen dies via
os.nice() handeln müsstest.
>>Masaru<<
Verfasst: Freitag 18. Dezember 2009, 11:04
von CM
Danke, doch da liegt ein Missverständnis vor:
nice != ionice
os.nice entspricht in etwa nice. Das ist schön, aber nicht was ich suche.
Verfasst: Freitag 18. Dezember 2009, 11:14
von Masaru
Ah, okay.
Dann wird Dir aber wohl wirklich nichts anderes übrig bleiben, als das Programm direkt aufzurufen.
Oder Du findest alternativ den C-Weg und holst Dir via cytpes Zugriff auf die "syscall" Funktion, ermittelst die Sycall Codes für
ionice_set (i.d.R. 289) und optional auch für
ionice_get (i.d.R. 290) und feuerst dann nativ den Call ab.
Könnte etwa so ausschauen:
Code: Alles auswählen
ctypes.CDLL('libc.so.6').syscall(289, pid, -1, ioprio) # wobei pid und ioprio halt die Parameter vom zu beeinflussenden Prozess mit entsprechender Prioirät sind
>>Masaru<<
Verfasst: Freitag 18. Dezember 2009, 11:18
von lunar
Die Alternative wäre, den Systemaufruf zu identifizieren, den "ionice" benutzt, um die E/A-Priorität zu ändern, und anschließend ctypes zu verwenden. Klingt komplizierter und ist auch komplizierter

Verfasst: Freitag 18. Dezember 2009, 11:33
von CM
Oh, danke Masaru.
Puh, um lunar aufzugreifen: Wenn ich noch etwas mehr Energie reinstecke kann ich eine ionice-Erweiterung für das os-Modul schreiben

. (Würde mich sogar reizen, aber Zeit ist etwas, was ich kaum habe ...)
Verfasst: Freitag 18. Dezember 2009, 17:44
von Leonidas
CM hat geschrieben:Ja, ok. Ich sollte vielleicht formulieren: Ist man gezwungen auf OS-abhängige Programme zurückzugreifen oder gibt es etwas pythoneigenes?
Ich dachte eigentlich, dass es so eine Funktionalität sowieso nur auf Linux gibt...
Verfasst: Samstag 19. Dezember 2009, 22:57
von CM
Nein, das gibt es zumindest für andere UNIX-Derivate auch. (Über die genaue Zahl bin ich mir nicht im Klaren.) Außerdem gibt es in der Python-Lib auch auf Betriebssysteme eingeschränkte Funktionalität - na gut, ich habe anders gefragt, aber ich hatte auch weniger Windows im Blick, obwohl es schön wäre es auch für Windows zu haben ...