Warum muss mein Python-Programm Durchschnitt nur etwa 33% CPU-Zeit pro Prozess? Wie kann ich Python benutzen Sie alle verfügbaren CPU?
Ich benutze Python 2.5.4. Mein Rechner: CPU AMD Phenom X3 720BE, 780G Mainboard, 4GB RAM, Windows 7 32-bit.
Ich benutze Python threading kann aber nicht jeder machen python.exe Prozess verbraucht 100% CPU. Warum sind Sie mit nur etwa 33-34% im Durchschnitt?.
Möchte ich direkt alle verfügbaren computer-Ressourcen in Richtung dieser großen Berechnungen, so füllen Sie diese so schnell wie möglich.
BEARBEITEN:
Vielen Dank an alle. Jetzt bin ich mit Parallel Python und alles funktioniert gut. Meine CPU immer bei 100%. Vielen Dank an alle!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, dass Sie eine 3-Kern CPU. Wenn Sie möchten, um mehr als einen CPU-Kern in native Python-code, haben Sie, um zu laichen mehrere Prozesse. (Zwei oder mehr Python-threads können nicht gleichzeitig ausgeführt werden, die auf verschiedenen CPUs)
Als R. Pate gesagt, Python ist
multiprocessing
Modul ist ein Weg. Allerdings würde ich vorschlagen, Blick auf Parallel Python statt. Es kümmert sich um die Verteilung von Aufgaben und message-passing. Sie können sogar die Ausführung von tasks auf vielen separaten Computern mit wenig änderungen an Ihrem code.Verwendung ist sehr einfach:
Versuchen die multiprocessing Modul, wie Python, während es echte, native threads, beschränken Ihre gleichzeitige Verwendung, während das GIL gehalten wird. Eine weitere alternative, und so etwas sollte man sich ansehen, wenn Sie müssen real Geschwindigkeit, ist das schreiben eines C-Verlängerung-Modul und Aufruf von Funktionen, die es von Python. Lassen Sie die GIL in den C-Funktionen.
Siehe auch David Beazley's Unfassbar GIL.
Global Interpreter Lock
Vom CPU-Auslastung wie es aussieht bist du immer noch auf einen single-core. Versuchen Sie, eine triviale Berechnung mit 3 oder mehr threads mit dem gleichen threading-code und sehen, ob es nutzt alle Kerne. Wenn nicht, ist etwas falsch sein könnte mit Ihrem threading-code.
Was Stackless Python?
Du Flaschenhals vermutlich woanders, wie die Festplatte (paging) oder memory Zugriff.
Sollten Sie einige Betriebssystem und Python monitoring, um festzustellen, wo der Flaschenhals ist.
Hier einige Infos für windows 7:
Performance Monitor: Sie können die Windows-Performance-Monitor, um zu prüfen, wie die Programme, die Sie ausführen, Einfluss auf die Leistung Ihres Computers, sowohl in Echtzeit und durch das sammeln von log-Daten zur späteren Analyse. (Systemsteuerung-> Alle Elemente der Systemsteuerung->Performance-Informationen und Tools-> Advanced Tools- > Ansicht-Performance-Monitor)
Ressourcen-Monitor: Windows-Ressourcen-Monitor ist ein system-tool, das Ihnen erlaubt, um Informationen über die Nutzung der hardware (CPU, memory, disk, Netzwerk) und software (file-handles und Module) Ressourcen in Echtzeit. Mit dem Ressourcenmonitor können Sie starten, stoppen, unterbrechen und fortsetzen von Prozessen und Dienstleistungen. (Systemsteuerung-> Alle Elemente der Systemsteuerung->Performance-Informationen und Tools-> Advanced Tools- > Ansicht-Ressource-Monitor)