Threadlarni Yaratish
Python threads.
Threadlarni Yaratish
Threadlar haqida faqat gaplashish ularni tushunishni qiyinlashtiradi. Haqiqiy kod yozishni o'rganish har doim yaxshi. Ushbu bo'limda siz threading modulidan foydalanasiz, bu modul ostida _thread moduli mavjud.
threading moduli uchun to'liq hujjatlarni quyidagi havolada topishingiz mumkin:
Endi bir nechta threadlarni yaratishning oddiy misolini ko'rib chiqamiz. Quyidagi kodni worker_threads.py
nomli faylga joylashtiring:
Birinchi uchta import sizga random, threading, va time modullariga kirish imkonini beradi. random modulini tasodifiy raqamlar yaratish yoki ketma-ketlikdan tasodifiy element tanlash uchun ishlatishingiz mumkin. threading moduli threadlarni yaratish uchun ishlatiladi, va time moduli esa vaqt bilan bog'liq ko'plab vazifalarni bajarish uchun ishlatiladi.
Ushbu kodda, siz time modulidan "worker" kodi ishlayotgan vaqtni tasodifiy tarzda kutish uchun foydalanasiz. Keyin, worker() funksiyasini yaratib, unga ishchi nomini uzatasiz. Bu funksiya chaqirilganda, qaysi ishchi ishlay boshlaganini chop etadi. So'ngra, 1 dan 5 gacha bo'lgan tasodifiy raqam tanlanadi. Bu raqamni ishlatib, ishchi qancha vaqt ishlaganini simulyatsiya qilish uchun time.sleep() ishlatiladi. Nihoyat, ishchi tugagani va ish davomida qancha vaqt ketganini bildirish uchun xabar chop etiladi.
Kodning oxirgi qismi 5 ta ishchi thread yaratadi. Thread yaratish uchun, worker() funksiyasini threadning chaqirishi kerak bo'lgan maqsad funktsiyasi sifatida uzatasiz. Keyingi argument sifatida, thread maqsad funksiyasiga uzatadigan argumentlar tuplamini berasiz. So'ng, thread.start() ni chaqirib, threadni ishga tushirasiz.
Funksiya bajarilishi to'xtaganda, Python threadni o'chiradi.
Kodni ishga tushirib ko'ring va natijada quyidagi kabi chiqishni ko'rishingiz mumkin:
Sizning chiqishingiz yuqoridagidan farq qiladi, chunki ishchilar sleep() funksiyasini tasodifiy vaqt davomida ishlatadilar. Aslida, agar kodni bir necha marta ishga tushirsangiz, har bir bajarilishi ehtimoliy ravishda boshqacha natijaga ega bo'ladi.
threading.Thread – bu klass. Uning to'liq ta'rifi quyidagicha:
Threadlarni yaratishda, siz nomlarni worker()
funksiyasida emas, balki threadni yaratishda ham berishingiz mumkin edi. args va kwargs – bu maqsad funksiyasining argumentlari. Python'da threadni daemon qilib belgilashni ham ko'rsatishingiz mumkin. "Daemon thread"lar Python interpretatoriga hech qanday talab qo'ymaydi, bu esa ikkita asosiy natijaga olib keladi:
- Agar faqat daemon threadlar qolsa, Python o'zini o'chiradi,
- Python o'chirilganda, daemon threadlar hech qanday bildirishsiz to'xtatiladi. group parametri kelajakda Python tiliga ThreadGroup qo'shilishi uchun kiritilgan, shuning uchun uni hozircha o'zgartirishga hojat yo'q.
Last updated on