You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Python</strong> <strong>para</strong> <strong>todos</strong><br />
Para comprobar si un thread sigue ejecutándose, se puede utilizar el<br />
método isAlive. También podemos asignar un nombre al hilo y consultar<br />
su nombre con los mé<strong>todos</strong> setName y getName, respectivamente.<br />
Mediante la función threading.enumerate obtendremos una lista de<br />
los objetos Thread que se están ejecutando, incluyendo el hilo principal<br />
(podemos com<strong>para</strong>r el objeto Thread con la variable main_thread <strong>para</strong><br />
comprobar si se trata del hilo principal) y con threading.activeCount<br />
podemos consultar el número de threads ejecutándose.<br />
Los objetos Thread también cuentan con un método setDaemon que<br />
toma un valor booleano indicando si se trata de un demonio. La utilidad<br />
de esto es que si solo quedan threads de tipo demonio ejecutándose,<br />
la aplicación terminará automáticamente, terminando estos threads<br />
de forma segura.<br />
Por último tenemos en el módulo threading una clase Timer que hereda<br />
de Thread y cuya utilidad es la de ejecutar el código de su método<br />
run después de un periodo de tiempo indicado como parámetro en<br />
su constructor. También incluye un método cancel mediante el que<br />
cancelar la ejecución antes de que termine el periodo de espera.<br />
Sincronización<br />
Uno de los mayores problemas a los que tenemos que enfrentarnos al<br />
utilizar threads es la necesidad de sincronizar el acceso a ciertos recursos<br />
por parte de los threads. Entre los mecanismos de sincronización<br />
que tenemos disponibles en el módulo threading se encuentran los<br />
locks, locks reentrantes, semáforos, condiciones y eventos.<br />
Los locks, también llamados mutex (de mutual exclusion), cierres<br />
de exclusión mutua, cierres o candados, son objetos con dos estados<br />
posibles: adquirido o libre. Cuando un thread adquiere el candado, los<br />
demás threads que lleguen a ese punto posteriormente y pidan adquirirlo<br />
se bloquearán hasta que el thread que lo ha adquirido libere el<br />
candado, momento en el cuál podrá entrar otro thread.<br />
El candado se representa mediante la clase Lock. Para adquirir el<br />
106