2009-07-22 18 views
6

Um die Qualitätssicherung in einer kritischen Multicore (8) -Workstation durchzuführen, möchte ich den gleichen Code in verschiedenen Prozessoren ausführen, aber nicht parallel oder gleichzeitig.Ausführen von Python-Code in verschiedenen Prozessoren

Ich muss es 8 Mal ausführen, einen Lauf für jeden Prozessor.

Was ich nicht weiß ist, wie man den Prozessor, den ich will, auswählt.

Wie kann dies in Python erreicht werden?

+5

Ich denke, Sie sollten das/die Betriebssystem (e) angeben, auf das/die Sie abzielen. Die Zeitplanung für CPUs liegt größtenteils außerhalb des Python-Bereichs (abgesehen davon, dass der Aufruf an das Betriebssystem zur Ausführung der Zeitplanung ignoriert wird). – Erik

+0

Es ist auf Linux Fedora. Danke für die Bemerkung! – proportional

Antwort

4

In Linux mit schedutils, ich glaube, Sie taskset-c X python foo.py verwenden würden, dass bestimmten Python-Prozess auf CPU X (genau ausgeführt werden, wie Sie Ihren CPUs identifizieren kann variieren, aber ich glaube, Zahlen wie 1, 2, 3, .. sollte überall funktionieren. Ich bin sicher, Windows, BSD-Versionen usw. haben ähnliche Befehle, um direkte Prozessorzuweisung zu unterstützen, aber ich kenne sie nicht.

3

Welcher Prozess zu welchem ​​Kern gehört, wird normalerweise von Ihrem Betriebssystem entschieden. Unter Linux gibt es einen Taskset aus dem Paket schedutils, um explizit ein Programm auf einem Prozessor auszuführen.

Python 2.6 hat ein multiprocessing Modul, das Python-Funktionen übernimmt und sie in separaten Prozessen ausführt, wahrscheinlich verschiebt jeden neuen Prozess auf einen anderen Kern.