Souhlasím, že v GUI aplikacích to využiju parádně, moje vyjádřená pochybnost (Python jako lepidlo) se však týkala jen grafické vrstvy GUI aplikace. Proto nekliknu a nepřepočítává... po kliknutí se spustí nativní aplikace, jejíž procesorový čas řídí OS a ne Python. Zatímco já si povídám skrz guiksicht s Pythonem, nativní aplikace vyřeší multiprocesorově problém a výsledek přichystá Pythonu na podnose, kde si ho příležitostně vyzvedne a použije v komunikaci se mnou.
Spouštět pro každou GUI událost (to nemusí být jenom kliknutí, ale třeba i najetí myší do nějaké oblasti) by bylo tragicky neefektivní a nedělá se to tak. Když už se chce tahle masařka Pythonu obejít, dělá se to tak, že se GIL releasne (to má nějaké předpoklady) a provede se nativní kód v novém vláknu. Nebo se v novém vláknu spustí celý nový interpret. Každopádně to znamená, že v tom novém vláknu nemůžeš volně manipulovat s datovými strukturami, se kterými jinak v Pythonu pracuješ.
Pokud by se to dělalo tak, jak píšeš, tak by tam ten Python byl jenom na ozdobu, protože drtivá většina zpracování by jela v tom jiném jazyce.
Proc by to bylo trapne? Realita je, ze nikdo nevi co s tim.
No právě. A to je v 21. století poněkud trapné, že se v jazyce nedá rozumně psát konkurentní aplikace...
A pokud vim, tak GIL je problem pouze u CPU-bound aplikaci, ktere jsou napsane primo v Pythonu. GIL neznamena, ze Python nemuze provadet veci konkurentne (jako treba GUI vlakna), ani to neznamena, ze ho externi knihovna nemuze obejit.
Jasně. Ale je to prostě opruz, musí se to řešit, vznikají chyby, kód je složitější... Je to prostě podobná berlička jako když do by-design jednovláknového JavaScriptu namatleš tisíce callbacků (ideálně vnořených tak do 5. až 75. úrovně) a pak ti z toho jde hlava kolem...
Konecne, kdyby se GIL odstranil, znamenalo by to snizit vykon jednoduchych (jednovlaknovych) skriptu, coz je asi tak 90% vyuziti Pythonu.
Nemám proti Pythonu vůbec nic, je to podle mě nadstandardně pěkný jazyk a na skripty ho používám moc rád, ale na větší věci (a to je naše téma) se podle mě moc nehodí, hlavně kvůli GILu a ani volitelné podpoře typů. Že je dneska móda cpát Python všude a ohýbat ho na všechno, je jiná věc.
Navic, diverzita je dulezita; kdyby vsechno fungovalo (/bylo navrzene) jako JVM, jaky by to melo smysl?
Na tom něco je. Potom ale jestli je semafor dobře navržený na to, aby řídil dopravu, nemusí být úplně dobrý nápad ho používat jako soustruh. Od toho tu je prostě soustruh, který se na to hodí líp