ich denke das ist eine triviale Frage, aber ich finde die Antwort nicht.
Folgendes simples Beispiel:
Code: Alles auswählen
import multiprocessing
print 'hallo'
def test(b):
c = 1/2.0 + b
return c
if __name__=='__main__':
p = multiprocessing.Pool(3)
liste = p.map(test,range(10))
print liste
hallo
[0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5]
Der Output den ich bekomme sieht aber so aus:
hallo
hallo
halloh
allo
[0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5]
Ich kann mir zwar schon erklären warum das so aussieht, nämlich weil offenbar das ganze Skript für jeden Prozess durchlaufen wird, aber was mache ich dagegen?
Muss doch möglich seinen in einem Skript einen Code mit Multiprocessing zu nutzen und zusätzlich auch anderen Code. Oder nicht?
--> Ich wollte das Problem lösen in dem ich mir ein Modul was nur den Multiprocessing-Teil enthält geschrieben habe, um das dann in ein anderes Skript reinzuladen. Da wird aber nicht der richtige Output, sondern der Wert "None" übergeben.
Ich nutze Python 2.7 unter Windows 7 32-bit
Danke schon mal!