Ich habe eine peinliche parallelen Schleife:Wie diese peinliche parallel Schleife mit Python parallelisieren
# Definitions
def exhaustiveExplorationsWithSimilarityAll(inputFolder, outputFolder, similarityMeasure):
phasesSpeedupDictFolder=parsePhasesSpeedupDictFolder(inputFolder)
avgSpeedupProgramDict=computeAvgSpeedupProgram(phasesSpeedupDictFolder)
parameters={
PROGRAMSPHASESSPEEDUPDICTS:phasesSpeedupDictFolder,
PROGRAMSAVGSPEEDUPDICT:avgSpeedupProgramDict
}
similarityHandler= SimilarityHandler(similarityMeasure,parameters)
# Sequential running
for fileName in os.listdir(inputFolder):
print fileName
exhaustiveExplorationsWithSimilarity(inputFolder + fileName, outputFolder + fileName, similarityHandler)
und ich möchte es Parallel mit Joblib
parallel auszurichten:
# Parallel version
num_cores = multiprocessing.cpu_count()
parallel= Parallel(n_jobs=num_cores)
for fileName in os.listdir(inputFolder):
print fileName
parallel(delayed(exhaustiveExplorationsWithSimilarity(inputFolder + fileName, outputFolder + fileName, similarityHandler)))
OR andere Version :
arg_generator = ((inputFolder + fileName, outputFolder + fileName, similarityHandler) for fileName in os.listdir(inputFolder))
parallel(delayed(exhaustiveExplorationsWithSimilarity)(arg_generator))
Aber beim Laufen Beschwerden mit:
parallel(delayed(exhaustiveExplorationsWithSimilarity(inputFolder + fileName, outputFolder + fileName, similarityHandler)))
File "/usr/lib/pymodules/python2.7/joblib/parallel.py", line 516, in __call__
for function, args, kwargs in iterable:
TypeError: 'function' object is not iterable
Was fehlt mir hier? Jede Hilfe wird geschätzt.
Hi Amir, es sieht so aus, als ob dieses Programm viele Probleme mit der Einrückung hat. Können Sie das bitte korrigieren, damit wir verstehen, was das Programm eigentlich macht? – 2ps
Es sieht so aus, als ob Sie tatsächlich noch * exhaustiveExplorationsWithSimilarity' in Ihrer Schleife aufrufen und dann das * result * davon verzögern. Wahrscheinlich müssen Sie einfach die Funktion übergeben und die Argumente verzögern? –
Lassen Sie mich einen Versuch mit Ihrer Antwort versuchen. Ja, Sie haben Recht – Amir