Ich benutze Python 2.5.4. Mein Computer: CPU AMD Phenom X3 720BE, Mainboard 780G, 4GB RAM, Windows 7 32 Bit.
Ich benutze Python-Threading, kann aber nicht jeden python.exe-Prozess zu 100% CPU verbrauchen. Warum verwenden sie nur etwa 33-34% im Durchschnitt?
Ich möchte alle verfügbaren Computerressourcen auf diese großen Berechnungen richten, um sie so schnell wie möglich zu vervollständigen.
BEARBEITEN: Danke an alle. Jetzt benutze ich Parallel Python und alles funktioniert gut. Meine CPU ist jetzt immer bei 100%. Danke allen!
Es scheint, dass Sie eine 3-Kern-CPU haben. Wenn Sie mehr als einen CPU-Kern in nativem Python-Code verwenden möchten, müssen Sie mehrere Prozesse generieren. (Zwei oder mehr Python-Threads können nicht gleichzeitig auf verschiedenen CPUs ausgeführt werden)
Als R. Pate sagte, Pythons multiprocessing
Modul ist eine Möglichkeit. Ich würde jedoch vorschlagen, stattdessen Parallel Python zu betrachten. Es kümmert sich um die Verteilung von Aufgaben und Message-Passing. Sie können sogar Aufgaben auf vielen separaten Computern ausführen, ohne dass sich Ihr Code ändert.
Die Verwendung ist ziemlich einfach:
%Vor%Probieren Sie das Multiprocessing -Modul aus, da Python, obwohl es echte, native Threads hat, ihre gleichzeitige Verwendung einschränkt während die GIL gehalten wird. Eine andere Alternative, und etwas, das Sie betrachten sollten, wenn Sie echte Geschwindigkeit brauchen, ist das Schreiben eines C-Erweiterungsmoduls und das Aufrufen von Funktionen in Python. Sie können die GIL in diesen C-Funktionen freigeben.
Siehe auch David Beazley Mindblowing GIL .
Aus der CPU-Nutzung sieht es so aus, als ob Sie immer noch auf einem einzigen Kern laufen. Versuchen Sie, eine triviale Berechnung mit 3 oder mehr Threads mit demselben Threading-Code auszuführen und zu prüfen, ob alle Cores verwendet werden. Wenn dies nicht der Fall ist, stimmt möglicherweise etwas mit Ihrem Code nicht.
Ihr Flaschenhals ist wahrscheinlich woanders, wie die Festplatte (Paging) oder Speicherzugriff.
Sie sollten einige Betriebssystem- und Python-Überwachung durchführen, um festzustellen, wo sich der Flaschenhals befindet.
Hier sind einige Informationen für Windows 7:
Systemmonitor : Mithilfe des Windows-Systemmonitors können Sie untersuchen, wie sich die ausgeführten Programme auf die Leistung Ihres Computers auswirken, und zwar sowohl in Echtzeit als auch durch Sammeln von Protokolldaten für die spätere Analyse. ( Systemsteuerung-> Alle Systemsteuerungselemente-> Performance-Informationen und Tools> Erweiterte Tools> Systemmonitor anzeigen)
Ressourcenmonitor : Der Windows-Ressourcenmonitor ist ein Systemtool, mit dem Sie Informationen zur Verwendung von Hardware (CPU, Speicher, Festplatte und Netzwerk) und Software (Dateihandles und Module) anzeigen können in Echtzeit. Mit dem Ressourcenmonitor können Sie Prozesse und Dienste starten, anhalten, anhalten und fortsetzen. ( Systemsteuerung-> Alle Elemente der Systemsteuerung -> Leistungsinformationen und -werkzeuge> Erweiterte Tools> Ressourcenmonitor anzeigen )
Tags und Links python performance process cpu-usage multiprocessing