Diskuze: Animace textu

Tvůrce

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Zkus tenhle modul:
https://docs.python.org/…y/sched.html
Nedávno jsem na něj narazil a myslím, že by ti mohl pomoc.
Hned ten první příklad je myslím to co potřebuješ
Asi jsem nepochopil, k čemu daný modul vlastně slouží. Můžeš napsat příklad?
Zkus tohle. Je to napsané jen tak na rychlo, ale myšlenka snad je dost
jasná
import sched, time
from threading import Thread
s = sched.scheduler(time.time, time.sleep)
text = list(reversed("Tohle je text"))
def vypis():
print(text.pop())
for i in range(len(text)):
s.enter(i,1,vypis)
t = Thread(target=s.run)
t.start()
time.sleep(1)
print("Něco jiného")
time.sleep(2)
print("Něco jiného2")
Jinak se omlouvám, to co jsi zřejmě potřeboval, byl modul threading.
Modul sched je v tomhle případě jako jít s kanónem na vrabce
Takhle je to jednodušší:
from time import sleep
from threading import Thread
def vypis():
for c in "Text k vypsaní.":
print(c)
sleep(1)
Thread(target=vypis).start()
print("Hlavní vlákno.")
sleep(2)
print("Tady můžeš pokračovat dál...")
sleep(1)
print("A tak dále...")
A co zkusit ohandlovat vypisování v nekonečném cyklu programu? Např. za pomoci modulu time?
Teoretických řešení je více, ale praktické řešení a jediné správné je využít frontu událostí (event queue).
Udělej následující:
Koukám se na dokumentaci a PyGame má podivně řešený event loop - nebo spíš hodně primitivně. Dokumentace, bohužel, neuvádí, jestli je časovač reentrantní, takže se může stát, že se bude událost objevovat ve frontě příliš často a dojde k tzv. throttlingu. Ale vzhledem k tomu, že mnohem horší problémy bude mít už samotný main loop, asi to bude to poslední, co by tě zajímalo.
Mimochodem, myslíš že by byl nějaký problém to spáchat přes ta vlákna? Klidně se rozepiš, když budeš mít čas, tahle problematika je zajímavá.
Kdykoliv se objeví vlákna, je to vždy velký problém. Práce s vlákny spadá do kategorie SLOŽITÉ a pokud se objeví v kódu, stává se vývoj složitějším o několik řádů.
Jen takový dotaz. Neřeší v pythonu tyhle problémy s vlákny právě GIL? Nebo to platí obecně?
Platí to obecně. GIL pouze zajišťuje sekvenční provádění bytecodu.
Zobrazeno 11 zpráv z 11.