Python je univerzální programovací jazyk používaný pro automatizaci, zpracování dat, webové aplikace i nástroje pro správu systémů. Program tvoří čitelný zdrojový kód, který vykonává příslušná implementace jazyka. Pro jednoduché skripty nabízí rozsáhlou standardní knihovnu; další funkce se přidávají pomocí balíčků. Python není konkrétní AI služba ani prostředí, které by samo zajišťovalo nepřetržitý chod programu.
Jazyk, interpret a balíčky
Je užitečné rozlišovat Python jako jazyk a jeho konkrétní implementaci. Běžně používaný CPython zdrojový kód překládá do mezikódu a vykonává ho. Zjednodušené označení „interpretovaný jazyk“ tedy neznamená, že by se program nikdy nepřekládal. Pro provoz skriptu je rozhodující dostupný interpret, jeho verze a závislosti projektu.
Python používá odsazení k vymezení bloků, například těla funkce nebo podmínky. Proměnné se běžně nevážou k předem deklarovanému typu, ale hodnoty své typy mají. Text, číslo a slovník nejsou zaměnitelné. Typové anotace pomáhají popsat očekávaná data; samy obecně nevynucují kontrolu všech hodnot za běhu.
Standardní knihovna je dodávaná s Pythonem a obsahuje například práci s JSON, soubory nebo základní HTTP klienty. Externí balíčky se instalují zvlášť, obvykle nástrojem pip. Název balíčku nemusí být totožný s názvem modulu používaným v příkazu import. Přítomnost balíčku v jednom prostředí také neznamená, že je dostupný jinému interpretu.
Oddělené prostředí pro každý projekt
Virtuální prostředí vytvořené modulem venv odděluje balíčky projektu od jiných instalací. Není to virtuální server ani bezpečnostní izolace nedůvěryhodného kódu. Program má dál oprávnění účtu, pod kterým běží. Prostředí řeší především to, které knihovny a jejich verze program používá.
Následující ukázka pro Linux vytvoří prostředí v pracovním adresáři a spustí připravený soubor. Jde o modelový postup, nikoli záznam instalace projektu 404M:
python3 -m venv .venv
.venv/bin/python worker.pyNa Windows má prostředí jinou strukturu cest, například .venv\Scripts\python.exe. Aktivace prostředí je pohodlný způsob změny příkazové cesty, ale při použití úplné cesty k interpretu není nutná. Závislosti je vhodné evidovat a na jiném stroji prostředí znovu vytvořit; kopírování hotového adresáře mezi systémy není obecně přenositelné řešení.
Malý příklad zpracování dat bez síťových požadavků
Pro automatizaci je typická kombinace načtení strukturovaných dat, kontroly jejich významu a dalšího zpracování. Tato ukázka používá fiktivní odpověď se záměrně dokumentační doménou. Nikam se nepřipojuje:
import json
odpoved = '{"domena": "example.com", "pocet_pokusu": 2}'
data = json.loads(odpoved)
if not isinstance(data.get("pocet_pokusu"), int):
raise ValueError("Chybí číselný počet pokusů")
print(data["domena"], data["pocet_pokusu"])Hodnota domény je v tomto příkladu pouhý text; program neověřuje její registraci. Funkce json.loads převádí JSON do Python objektů. Úspěšné načtení ale nepotvrzuje správnost věcných údajů ani to, že jsou přítomná všechna požadovaná pole. Pro skutečnou aplikaci je nutné vymezit očekávanou strukturu i význam hodnot.
Co potřebuje dlouhodobě běžící worker
Worker je program provádějící úlohy na pozadí. Python se k tomuto použití hodí, ale nekonečný cyklus sám nestačí. Síťové požadavky potřebují timeouty, chyby rozlišení na dočasné a trvalé a opakování musí respektovat pravidla vzdálené služby. Pád programu nesmí nepozorovaně ztratit rozpracovanou dávku.
Například standardní urllib.request.urlopen umožňuje nastavit timeout pro blokující operace. To není univerzální záruka celkové maximální délky zpracování úlohy. Je potřeba zvládnout také čtení odpovědi, její velikost, chybný formát a nečekané ukončení spojení. JSON z nedůvěryhodného zdroje může spotřebovat mnoho paměti a CPU.
Automatické spuštění po restartu a dohled nad procesem řeší provozní prostředí, například systémová služba. Pro přehled o práci jsou vhodné počty dokončených úloh, doba běhu a srozumitelné chyby. Logování ovšem nesmí zveřejňovat přístupové tokeny a u malého úložiště je potřeba řídit jeho objem.
Přenositelnost a výkon mají hranice
Stejný zdrojový kód může běžet na Windows, Linuxu i Raspberry Pi, pokud podporují použité rozhraní a knihovny. Rozdílné cesty, oprávnění, dostupnost systémových funkcí nebo balíčky s nativním kódem mohou přenos zkomplikovat. Skript napsaný v Pythonu proto není automaticky nezávislý na platformě.
U síťového sběru dat často rozhodují odezvy a limity služeb. U náročných výpočtů záleží také na implementaci a použitých knihovnách. Vyšší počet vláken sám o sobě nezaručuje zrychlení každého programu. Nejdříve je vhodné zjistit, zda se čeká na síť, disk, paměť nebo výpočty, a teprve potom měnit návrh.
Z archivu 404M
- Publikování uvolněných domén na Twitter opraveno (11. 6. 2023) — Článek z roku 2023 dokládá autorovy Python experimenty s doménovým robotem a závislost práce na zapnutém počítači. Tehdejší podmínky Twitter API nejsou současným ceníkem.
- Dropbox rules.dropboxignore a zvláštní bug s **/#*, který mi rozbil synchronizaci (18. 9. 2026) — Práce s Python projekty mezi počítači a řešení synchronizace. Dokládá praktické pracovní soubory, nikoli obecnou příčinu všech problémů Dropboxu.
- Chtěl jsem si pronajmout VPS. Nakonec mám domací dedikovaný server za 2 840 Kč (10. 11. 2026) — Dlouhodobě běžící Python worker na Raspberry Pi, oddělení centrálních dat od vykonávání úloh a automatické spouštění služby.