Ich bin neu in Python, und ich möchte pool.apply_async()
verwenden, um meinen Code zu kalibrieren. Die Parameter von pool.apply_async()
haben mich verwirrt.Verwenden von über pool.apply_async
Hier ist mein Code:
def detect(i, pdf):
savefig2pdf.save(event['value'][0][5000:6000],
event['value'][1][5000:6000],
event['value'][2][5000:6000],
event['start point index']+5000 ,
eventlist[i],
p_result,
s_arrival,
pdf)"
if __name__ == '__main__':
pdf = PdfPages('cut_figure.pdf')
pool = multiprocessing.Pool(processes=10) # set the processes max number 10
for i in range(0, len(eventlist)):
pool.apply_async(detect, (i, pdf,))
pool.close()
pool.join()
pdf.close()
Wenn ich nur die i
passieren, es funktioniert. Wie kann ich die PDF-Prozesse auch an Prozesse weitergeben? Ich brauche das pdf, um schreiben zu können, bis der ganze Prozess fertig ist. Danke für Ihre Hilfe.
Was ist die genaue Fehlermeldung, die Sie sehen? Können Sie die ersten Zeilen von 'detect' anzeigen? – mbatchkarov
tatsächlich gibt es keine Fehlermeldung ... wenn ich nur passiere, um zu erkennen, funktioniert es gut. wenn ich pdf und ich überlasse, verarbeitet Code nicht die ermittelnfunktion – rhy
ich denke, dass es geschieht, wenn es das 'pdf' Objekt über mehrfache Prozesse teilt. oder Ihre 'detect' Funktion könnte eine Ausnahme auslösen. – Himal