Signali u (višedretvenoj) Python aplikaciji ------------------------------------------- "Problemi" - Signali se ne mogu blokirati (ali se mogu ignorirati) - Signale prima i obrađuje samo glavna dretva (ako može) Jednostavni primjeri (bez dretvi) - sig-0.py - za vrijeme obrade signala, novi signali prekidaju obradu i započinju "svoju" obradu - sig-1.py - signali se ignoriraju za vrijeme obrade (treba postaviti!) - sig-2.py - programsko rješenje: svaki se signal prihvaća, ali na početku obrade provjerava je li ona već u tijeku ... Primjeri s dretvama - python2 blokira na .join pozivu - ne prihvaća signale primjeri sig-threads-1.py do sig-threads-4.py ne rade - python3 nekako prekida i .join (dva Ctrl+C će ipak prekinuti program) - sig-threads-1.py - potrebna dva Ctrl+C - sig-threads-2.py - dretve se označe .daemon = True pa je jedan Ctrl+C dosta - sig-threads-3.py - u obradi signala glavna dretva poziva exit, ali ne pomaže - sig-threads-4.py - u obradi signala glavna dretva postavlja kraj=True - sig-threads-5.py - rješenje koje radi i za python2 i python3 !!! kombinira prekidivi .join kojemu se postavi timeout te programsko rješenje prihvata prekida (postavljanje varijable kraj)