2016-11-15 4 views
0

Ich habe diesen Code:Warum Multiprozessing nicht funktioniert?

import multiprocessing 


def worker(): 
    print 'Worker' 
    return 

if __name__ == '__main__': 
    jobs = [] 
    for i in range(5): 
     p = multiprocessing.Process(target=worker) 
     jobs.append(p) 
     p.start() 

Aus welchem ​​Grund er druckt ‚Arbeitnehmer‘ zwei Mal und stoppt. Weiß jemand warum? Was mache ich falsch?

+0

Getestet auf 2.7.10 und 3.5.2 .... es funktioniert für mich Kannst du mehr Details geben? Vielleicht Versionsnummer, OS, etc etc ... – MooingRawr

+0

Es druckt fünf mal für mich. Python 2.7. Vielleicht ein Umweltproblem? – DejaVuSansMono

+0

Dies ist nicht reproduzierbar. –

Antwort

2

Starten von Multiprocessing-Aufgaben in Python auf einem definierten Wert von "Kernen", wählen Sie lieber einen Pool zu erstellen und den Prozess innerhalb des Pools zu starten.

pool = multiprocessing.Pool() 
for i in range(5): 
    pool.apply_async(worker) 
pool.close() 

Aber wenn Sie es auf Ihrem Weg zu tun, ich denke, Sie p.join() hinzufügen:

import multiprocessing 


def worker(): 
    print 'Worker' 
    return 

if __name__ == '__main__': 
    jobs = [] 
    for i in range(5): 
     p = multiprocessing.Process(target=worker) 
     jobs.append(p) 
     p.start() 
     p.join() 
Verwandte Themen