multiprocessing vs multithreading vs asyncio in Python 3.4
Fand ich, dass in Python 3.4 gibt es nur wenige verschiedene Bibliotheken für multiprocessing/- threading: multiprocessing vs threading vs asyncio.
Aber ich weiß nicht, was man verwenden oder ist das "empfehlenswert". Tun Sie das gleiche, oder sind das verschiedene? Wenn ja, welche ist für was? Ich möchte ein Programm schreiben, nutzt multicores in meinem computer. Aber ich weiß nicht, die Bibliothek, die ich lernen sollte.
- Vielleicht bin ich zu blöd für AsyncIO hilft
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bestimmt sind (leicht) unterschiedlichen Zwecken dienen und/oder Anforderungen. CPython (eine typische, fern-Python-Implementierung) hat immer noch die global interpreter lock so ein multi-threaded-Anwendung (ein standard-Weg, um die Parallelverarbeitung implementieren heute) ist suboptimal. Das ist, warum
multiprocessing
kann bevorzugt werden, die überthreading
. Aber nicht jedes problem kann effektiv aufgeteilt in [fast unabhängig] Stücke, so kann es notwendig sein, in schweren interprocess communications. Das ist, warummultiprocessing
können nicht vorgezogen werdenthreading
im Allgemeinen.asyncio
(diese Technik ist nicht nur in Python, weitere Sprachen und/oder frameworks haben es auch, z.B. Boost.ASIO) ist eine Methode, um effektiv zu behandeln eine Menge von I/O-Operationen von vielen gleichzeitigen Quellen w/o Notwendigkeit der parallelen Ausführung von code. Es ist also nur eine Lösung (eine gute Tat!) für eine bestimmte Aufgabe, nicht für die parallele Verarbeitung im Allgemeinen.[Schnelle Antwort]
TL;DR
Die Richtige Wahl:
Referenz
[HINWEIS]:
asyncio
Ereignis-Schleife (uvloop machtasyncio
2-4x schneller).asyncio
wenn Sie von erwartbaren Funktionenrequest
Bibliothek ist nicht erwartbaren-Methode statt, die Sie verwenden können wie dasaiohttp
Bibliothek oder async-request und etc.