[python] Stopky
Hynek Fabian
hynek.fabian na firma.seznam.cz
Pátek Říjen 22 16:53:49 CEST 2010
Predpokladam ze tvuj problem neni ten cyklus, ale jak to udelat aby cekani na
vstup neblokovalo donekonecna.
Zpusobu je vic, co me tak z hlavy napada jako relativne nejjednodussi je
nechat si za pet minut dorucit signal z casovace, viz modul signal.
Python instaluje implicitni handler ktery vystreli vyjimku KeyboardInterrupt,
takze na ukonceni programu nepotrebujes vlastne nic nez zavolat
signal.setitimer() a pak si tu vyjimku odchytit. Behem prace casovac vypnes
nastavenim na 0. Nebere to v uvahu zastaveni pomoci ^S ale to te predpokladam
netrapi.
Pokud (az :-) budes chtit neco slozitejsiho, budes potrebovat si prepnout
stdin do neblokujiciho modu (O_ASYNC) pomoci modulu fcntl. Pak si budes ale
muset sam resit blokovani (neblokujici nekonecna smycka neni dobry napad) a
obecne to neni trivialni zalezitost.
Hotove neblokujici cteni je nekde v modulu curses. Nevim jestli jde nejak
rozumne pouzit bez zbytku curses (initscr() prakticky obrati terminal naruby
coz nemam rad), ale jestli chces hybat kurzorem, barvicky apod. tak je curses
asi nejlepsi zpusob.
Jestli jsi na wydlich tak jsou urcite i jine zpusoby (conio?) ale to tom nic
nevim.
remixus79 (Friday 22 October 2010 13:37:06):
> Zdravím,
>
> potreboval by som poradiť. Mám program v ktorom je nekonečný cyklus.
> Tento cyklus stale caka na vstup od uzivatela. Potreboval by som to
> spraviť tak že by stále čakal na ten vstup ale zároveň by aj
> kontroloval čas a ak by užívateľ nič nezadal po 5minútach by sa
> vypol.
>
>
> Ďakujem za každú radu.
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
Další informace o konferenci Python