Je Python dobrý pre súbežnosť?
Je Python dobrý pre súbežnosť?

Video: Je Python dobrý pre súbežnosť?

Video: Je Python dobrý pre súbežnosť?
Video: Java On Conference 2022, JDK 19, Spring Framework 6 и Spring Boot 3 [Новости MJC #11] 2024, November
Anonim

Python nie je veľmi dobre pre CPU-viazané súbežné programovanie. GIL (v mnohých prípadoch) spôsobí, že váš program beží tak, ako keby bežal na jednom jadre – alebo ešte horšie. Ak je vaša aplikácia I/O viazaná, Python môže byť vážnym riešením, pretože GIL sa bežne uvoľňuje pri blokovaní hovorov.

Tiež je potrebné vedieť, či Python podporuje súbežnosť?

Python áno majú vstavané knižnice pre najbežnejšie súbežné programovacie konštrukcie - multiprocessing a multithreading. Dôvodom je multithreading Python nie je v skutočnosti viacvláknový, kvôli GIL in Python.

Niekto sa môže tiež opýtať, prečo nie je v pythone možný multithreading? Interpret CPython (pre čisto Python kód) vynúti uvoľnenie GIL každých sto bajtových inštrukcií kódu. Jednoducho umožňuje naraz bežať iba jedno vlákno v rámci tlmočníka. Takže multiprocessing nie multithreading vám umožní dosiahnuť skutočnú súbežnosť.

Následne je otázkou, či je Python dobrý na multithreading?

Python nedovoľuje viacvláknové v pravom zmysle slova. Má a viacvláknové balík, ale ak chcete viac vláknový na urýchlenie kódu, potom to zvyčajne nie je a dobre nápad použiť to. Python má konštrukciu nazývanú Global Interpreter Lock (GIL).

Ktorý modul možno použiť na implementáciu súbežnosti v Pythone 3?

The súbežné . futures modul bol pridaný v Python 3.2. Podľa Python dokumentáciu poskytuje vývojárovi rozhranie na vysokej úrovni na asynchrónne vykonávanie volateľných položiek.

Odporúča: