Je Python dobrý pro souběžnost?
Je Python dobrý pro souběžnost?

Video: Je Python dobrý pro souběžnost?

Video: Je Python dobrý pro souběžnost?
Video: How to Deal With Concurrency in Python 2024, Prosinec
Anonim

Krajta není moc dobrý pro CPU-vázané souběžný programování. GIL (v mnoha případech) způsobí, že váš program běží tak, jako by běžel na jediném jádře – nebo ještě hůř. Pokud je vaše aplikace I/O vázána, Krajta může být vážným řešením, protože GIL se normálně uvolňuje při blokování hovorů.

Je také důležité vědět, zda Python podporuje souběžnost?

Python ano mají vestavěné knihovny pro nejběžnější souběžný programovací konstrukce - multiprocessing a multithreading. Důvodem je multithreading Krajta není opravdu multithreading, kvůli GIL in Krajta.

Někdo se také může ptát, proč multithreading není možný v pythonu? Interpret CPythonu (čistý Krajta kód) vynutí uvolnění GIL každých sto bajtových instrukcí kódu. Jednoduše umožňuje, aby v rámci interpretu běželo pouze jedno vlákno najednou. Takže multiprocessing ne multithreading vám umožní dosáhnout skutečné souběžnosti.

Následně je otázkou, zda je Python dobrý pro multithreading?

Krajta nedovoluje vícevláknové v pravém slova smyslu. Má to vícevláknové balíček, ale pokud chcete mnoho vláknový pro urychlení kódu, pak to obvykle není a dobrý nápad to použít. Krajta má konstrukci zvanou Global Interpreter Lock (GIL).

Který modul lze použít k implementaci souběžnosti v Pythonu 3?

The souběžný . futures modul bylo přidáno Krajta 3.2. Podle Krajta dokumentaci poskytuje vývojářům rozhraní na vysoké úrovni pro asynchronní provádění callables.

Doporučuje: