Základní informace o jazyku Python

Co o Python říká oficiální web:

Python is a programming language that lets you work quickly and integrate systems more effectively.

Užitečné odkazy

Instalace jazyka Python 3

Osobní zkušenost instalace mám pouze na Mac OS a Linux. V instalaci by vám měl pomoct následující odkaz. Pokud instalujete Python na vlastní PC, instalujte verzi Python 3.9+ (pokud již nějakou Python 3 verzi máte, mělo by to být dostatečné).

Úkol
Instalace jazyka Python 3 na Vámi zvolenou platformu.

Pip vs (Ana)Conda

Jak pip tak conda jsou balíčkovače pro instalování programů/knihoven v rámci Python ekosystému. Anaconda je zaměřená více na vědecký Python (dataminig, machine learning). Na univerzitním PC najdete Condu. Pro naše potřeby bude dostatečné zprovoznení příkazu pip3 install ....

IDE

Python je možné psát v jakémkoli textovém editoru případně používat Python interpretr. Z vlastní zkušenosti doporučuji Vistual Studio Coded.

Úkol
Zprovoznit libobolné IDE a otestujte jednoduchý hello_world.py skript.

1
2
# hello_world.py
print("Hello world!")

Základy jazyka Python

Obsah seminářů 1, 2, 3, 5 zde.

Python vs. parallel programming

Je Python vhodný pro paralelní/distribuované programování?

Global Interpreter Lock

GIL je mutex (vzájemné vyloučení), který pomáhá udržovat informaci o tom, jaké příkazy Pythonu právě vykonává. Zároveň poskytuje aktuálnímu vláknu přístup k interním funkcím Python interpretru. V čem je to problém? Pouze jedno vláknu může v jeden okamžik vyhodnocovat kód v interpretru. Multi-thread scripty jsou ve výsledku pomalejší než single-thread.

The GIL is controversial because it prevents multithreaded CPython programs from taking full advantage of multiprocessor systems in certain situations. Note that potentially blocking or long-running operations, such as I/O, image processing, and NumPy number crunching, happen outside the GIL. Therefore it is only in multithreaded programs that spend a lot of time inside the GIL, interpreting CPython bytecode, that the GIL becomes a bottleneck.

Jak vyřešit GIL problém?

Oficiální knihovna multiprocessing pro jazyk Python je alternativa řešící problém s GIL. Místo vytváření vláken dochází k vytváření procesů. Každý proces má vlastní GIL a proto ve výsledku nedochází k problému zmíněném výše. Více informací a příklady jsou dostupné zde. Vznikají však problémy s komplikovanějším sdílením dat mezi procesy.

Jak by to tedy správně mělo být?

Scala https://www.scala-lang.org + Apache Spark http://spark.apache.org, Clojure https://clojure.org, výpočty na GPU CUDA https://developer.nvidia.com/cuda-zone (existuje i API do Python).