Funktioniert dieses Modul überhaupt mit Windows? Jeder meiner Versuche scheitert..
Hat jemand ggf. ein funktionierendes Beispiel (Win7, python27)?
Wahrscheinlich geht es mit Python 3 - 2.7 wird wohl nicht mehr unterschützt.
Multiprocessing Windows
Bitte zeige Code, mit dem es nicht funktioniert und beschreibe, was genau nicht funktioniert. Nach 45 Beiträgen sollte man richtiges Fragen doch so langsam mal hinbekommen...
Wie dem auch sei. Es ist in der Tat so, dass man mit `multiprocessing` unter Windows etwas mehr falsch machen kann als unter Linux. Einige mögliche Fehlerquellen werden hier beschrieben. Wenn du etwas von den dort aufgeführten Punkten nicht verstehst, dann frag ruhig nach.
Abhängig von deinem Anwendungsfall kann es übrigens sinnvoll sein, einen Blick auf concurrent.futures zu werfen, inwiefern dieses möglicherweise als Alternative für dein Problem infrage kommt. Es ist IMHO einfacher zu verstehen und zu benutzen als `multiprocessing`. Für Python 2.x kannst du es z.B. hier herunterladen bzw `pip` benutzen.
Wie dem auch sei. Es ist in der Tat so, dass man mit `multiprocessing` unter Windows etwas mehr falsch machen kann als unter Linux. Einige mögliche Fehlerquellen werden hier beschrieben. Wenn du etwas von den dort aufgeführten Punkten nicht verstehst, dann frag ruhig nach.
Abhängig von deinem Anwendungsfall kann es übrigens sinnvoll sein, einen Blick auf concurrent.futures zu werfen, inwiefern dieses möglicherweise als Alternative für dein Problem infrage kommt. Es ist IMHO einfacher zu verstehen und zu benutzen als `multiprocessing`. Für Python 2.x kannst du es z.B. hier herunterladen bzw `pip` benutzen.
Nichts für ungut, aber bitte erspare uns deine Mutmaßungen und lies die Dokumentation. Mit sowas setzt man auch schnell mal Gerüchte in die Welt, weil ein anderer Anfänger möglicherweise auf deinen Beitrag stößt und ihm beim Überfliegen des Threads dies im Kopf bleibt. Sowas ist nicht wirklich schön.Dami123 hat geschrieben:Wahrscheinlich geht es mit Python 3 - 2.7 wird wohl nicht mehr unterschützt.
Mein Anliegen belief sich hauptsächlich auf die Anfrage eines getesteten Scripts.
Aber natürlich hast du Recht, war nur etwas wütend über den erneut gescheiterten Versuch "multiprocessing" zum laufen zu bringen.
Nehmen wir als Beispiel diesen für Windows angefertigten Beispiel-Code:
"hello" wird nicht ausgegeben.
Ärgerlich ist natürlich, dass die führenden Thread-Module funktionieren nur multiprocessing nicht.
Was ich aber nicht getested hab, ist eine objektorientierte Version mit multiprocessing, ggf. geht es nur so.
PS:
Multiprocessing möchte ich verwenden, da ich in meiner wxpython GUI Anwendung einen An/Aus Button integrieren möchte,
der ein laufendes Modul pausiert/beenden - fortsetzt/startet.
Aber natürlich hast du Recht, war nur etwas wütend über den erneut gescheiterten Versuch "multiprocessing" zum laufen zu bringen.
Nehmen wir als Beispiel diesen für Windows angefertigten Beispiel-Code:
Code: Alles auswählen
from multiprocessing import Process, freeze_support
def foo():
print 'hello'
if __name__ == '__main__':
freeze_support()
p = Process(target=foo)
p.start()
Ärgerlich ist natürlich, dass die führenden Thread-Module funktionieren nur multiprocessing nicht.
Was ich aber nicht getested hab, ist eine objektorientierte Version mit multiprocessing, ggf. geht es nur so.
PS:
Multiprocessing möchte ich verwenden, da ich in meiner wxpython GUI Anwendung einen An/Aus Button integrieren möchte,
der ein laufendes Modul pausiert/beenden - fortsetzt/startet.
Zuletzt geändert von Dami123 am Sonntag 9. Juni 2013, 00:37, insgesamt 1-mal geändert.
@Dami123: Da fehlt am Ende ein ``p.join()`` damit das Programmende den Prozess für die Ausgabe nicht beendet bevor er etwas ausgeben konnte.
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
Ich habe dein Programm unter Windows XP mit cygwin und Python 2.7.3 und auch in der Windows Command Shell mit Python 2.7.2 ausprobiert und bei mir kam beide Male diese Ausgabe:Dami123 hat geschrieben:Das ändert nichts.
Code: Alles auswählen
hello
In specifications, Murphy's Law supersedes Ohm's.