2017-08-31 3 views
0

Ich verwende Python Multiprozessing wie folgt aus:Python Multiprocessing ist Asynchron nicht

pool = mp.Pool(processes=mp.cpu_count()) 
num_jobs = 5 

print("Start Multiprocessing with: " + str(mp.cpu_count()) + " processes and " + str(num_jobs) + " jobs") 

for i in range(num_jobs): 
    start = int(...) 
    end = int(...) 
    result = pool.apply_async(worker, args = (parameter1, start, end,), callback = callback_function) 
    result.get() 

result = pool.apply_async(worker2, args = (parameter1, parameter2,), callback = callback_function2) 
result.get() 

pool.close() 
pool.join() 

In meinem Arbeiter Funktionen Drucken Ich etw mag:

def worker(parameter1, start, end): 

    for in_idx in range(0,100) 
     print(in_idx) 

jedoch die Arbeiter aufgerufen werden segmentally statt asynchron. Was ist hier falsch? Irgendwelche Ideen?

+0

Sie haben 'result.get' in der Schleife. – mgilson

+0

Ist das ein Problem? Ich brauchte es zu Debugging-Gründen? Muss ich es löschen oder können Sie eine Lösung bereitstellen, ohne sie zu löschen? @mgilson – thigi

+1

get() standardmäßig Blöcke bis zur Fertigstellung. – jordanm

Antwort

0

@jordanm Wie gesagt:

get() durch Standardblocks bis zum Abschluss.