Ich habe derzeit Probleme mit dem Umgang mit diesem Problem in Python 3.5 +.Multiprocessing, Multithreading oder asyncio für diese
Ich habe Code, der wie folgt aussieht:
while True:
do_process1() # run this synchronously
do_process2() # don't wait on this to go to the next iteration but need to handle its completion
Und in diesem Fall nimmt do_process2()
eine lange Zeit. Ich möchte do_process2()
asynchron ausführen, damit die nächste Iteration der Schleife nicht auf do_process2()
wartet, um abzuschließen.
Von dem, was ich lese, könnte ich Multithreading verwenden, aber mit der GIL sehe ich nicht, wie ich do_process2()
"offload" und die Ausführung der nächsten Iteration fortsetzen kann.
Es scheint, als würde Multiprozessing hier gut passen. Viele der Beispiele, die ich da draußen sehe, sind auf warten auf den Subprozess, um die Arbeit zu beenden. Ich möchte das nicht tun, ich möchte weiterhin die while
Schleife ausführen.
Ebenso möchte ich in der Lage sein, einen Rückruf von einem asynchronen Aufruf an do_process2()
zu behandeln, damit ich den Abschluss dieser Operation behandeln kann. Ich sehe, dass ich das mit einemObjekt zu apply_async()
tun könnte, aber ist das der beste Ansatz hier?
Was ist der beste Ansatz hier? Und ich benutze Python 3.5+ und frage mich, wo asyncio in all das passt? Ich denke wie multi threading, würde ich nicht den Gewinn haben, den ich auf dem Ausladen und fortsetzender Arbeit suche.
Danke für die Information! Sorgt "Asyncio" für den Multithreading-Teil von Python? Ist es nur ein anderer Weg? – user7327326