Subclassing Thread
Python threads.
Thread Classini Subclass Qilish
Thread klassi threading modulidan subclass qilinishi mumkin. Bu sizga thread'ni yaratish, bajarish va oxir-oqibat o'chirish jarayonini yanada batafsil boshqarish imkonini beradi. Subclass qilingan thread'lar bilan ko'pincha duch kelasiz.
Avvalgi misolni Thread klassining subclassidan foydalanib qayta yozamiz. Quyidagi kodni worker_thread_subclass.py
nomli faylga joylashtiring:
Ushbu misolda, siz WorkerThread klassini yaratdingiz. Klass konstruktorida init() metodida faqat bitta argument qabul qilinadi, ya'ni threadga beriladigan nom. Bu nom self.name atributida saqlanadi. So'ngra, run() metodini o'zgartirasiz.
run() metodi aslida Thread klassida oldindan belgilangan. Bu metod thread qanday ishlashini boshqaradi. U klassni yaratishda uzatgan funksiyani chaqiradi. O'z subclass'ni yaratishda run() metodini yaratish, asl metodni o'zgartirish (overriding) deb ataladi. Bu sizga thread'ga moslashtirilgan xatti-harakatlar, masalan, loglashni qo'shish imkonini beradi, agar siz faqat asosiy klassdagi run() metodidan foydalansangiz, bunday imkoniyat bo'lmaydi.
WorkerThread klassining run() metodida worker() funksiyasini chaqirasiz. worker() funksiyasida kichik bir o'zgarish bor, chunki u endi instance_id argumentini qabul qiladi, bu klassning noyob identifikatorini bildiradi. Shuningdek, print() funksiyalarini yangilab, unda instance_id ni ham chiqarishingiz kerak.
Yana bir o'zgartirishni main shartli operatorida amalga oshirishingiz kerak, bunda threading.Thread() ni to'g'ridan-to'g'ri chaqirish o'rniga, endi WorkerThread ni chaqirasiz va nomni uzatasiz.
Kodning oxirgi qatorida start() ni chaqirganda, bu metod run() ni o'zi chaqiradi. start() metodi threading.Thread klassining bir qismidir va siz uni o'zingizning kodingizda o'zgartirmadingiz.
Ushbu kodni ishga tushirganda, chiqish asl versiyadagi chiqishga o'xshash bo'lishi kerak, faqat endi sizda instance_id ham chiqishda ko'rsatiladi. Uni sinab ko'ring va o'zingiz ko'ring!
Last updated on