Comptadors simultànis¶
En el fitxer
compta.pydesenvolupeu la funció:- compta(mn, mx):
Cada segon, visualitza pel canal estàndard de sortida un element de la sèrie mn, mn + 1, mn + 2, …, fins arribar a mx. Els paràmetres mn i mx son del tipus
int.La funció no retorna res.
Per fer que surti un element cada segon podem usar la funció
time.sleep()la bibliotecatime. Per fer que a la pantalla (canal estàndard de sortida) surti un número al mateix lloc cada segon ho podem fer amb la funció predefinida de pythonprint(). El retorn de línia queprint()fa per omissió, es pot evitar amb el paràmetreend="r". El valor"r"fa que el cursor del terminal vaig a l’inici de la línia sense saltar a la següent.L’enviaments de caràcters a pantalla en el sistema es fa quan s’inclou el salt de línia al final (
"n"). En el nostre cas no volem saltar de línia, haurem de forçar l’enviament mitjançant el paràmetre flush deprint(). Fentflush=Truefarà que s’enviïn els caràcters sense esperar el salt de línia.Feu un guió python
comptaexecutable que invoqui la funció i subministri els paràmetres de la funció a partir dels arguments de la línia de la comanda. Un exemple de comanda és:$ compta 1 10
Escriviu un guió bash en el fitxer
comptadorsque executi cinc comptadors que comptin simultàniament. El primer comptador comptarà de 3 a 16, el segon, de 33 a 46, el tercer de 333 a 46, el quart de 3333 a 3346, i el darrer, de 33333 a 33346.Executar en un sol terminal serà confòs doncs han de compartir el mateix canal estàndard de sortida. Per fer que cada procés tingui el seu propi terminal podeu fer servir la comanda xterm amb les opcions -e i -geometry. Per exemple,
$ xterm -geometry 10x2+100+200 -e "./compta 1 10
obre un nou terminal que hi caben 2 línees de text de 10 caràcters (10x2) a posició x de pixel 100, i la posició y 200 de pantalla, (les y positives van cap avall. ) i cada segon surt un nombre de l’1 al 10.
Feu que el guió
comptadorsobri cinc xterms de mida 10x2 en les posicions (0, 200), (100, 200), (200, 200), i (300, 200) i (400, 200).Un exemple gràfic és