TGViewer
Otabek’s I/O Otabek’s I/O @otabekswe · 2.84K subscribers
Post #243 731
GIL

Bu mavzu haqida anchadan beri yozish niyatim bor edi va bugun shu kun keldi.

Keling GILga kirishdan oldin bazi narsalarni ko'rib chiqsak.

Thread - Bu kompyuteringiz ichida ishlaydigan ishchi. Biror ishni qilish uchun siz thread yaratasiz va unga task berasiz. U esa bajaradi.

Thread yaxshikuya ammo tasavvur qiling ikkita ishchingiz bitta ishni qilishga talashib qolsa nima qilasiz?

Bu muammo bizga "race condition"ni keltirib chiqaradi. Jaydarichasiga aytganda "Poyga"ni keltirib chiqaradi. Well shu yerda yordamga "Lock" keladi.

Lock - xojatxonaga hamma istalgan vaqt kira olmasligi uchun qulf qo'yishadiyu. Python ham huddi shu ishni qiladi. Bir nechta threadlar share qilingan resursga bir vaqtda kira olmasligi uchun lock ishlatiladi.

Moshinani bir vaqtda 2ta odam haydashini istamasangiz kerak menimcha.

Biror share qilingan resursni olaylik misol uchun o'zgaruvchi. O'zgaruvchiga kirayotgan thread avval uni "lock"ini ya'ni kalitini so'raydi.

Agar "Lock" boshqa thread tomonidan olingan bo'lsa, u o'sha thread o'z ishini tugatishini kutib turadi. Va keyin tugatishi bilan u ham o'z ishini o'sha resurs ustida bajaradi.

Yaxshi bir muammodan qutildik ammo yana bir muammo bor. Agar ikkita thread ham bir-birini resursi uchun "lock"ni kutib qolsa nima bo'ladi?

Bu muammo Deadlock deyiladi va bu butun dasturni birgalikda ishlashini cheklab qo'yadi. Buni yechish uchun "lock"lardan foydalanishda ehtiyot bo'lishimiz va boshqa threadlar resurslarni o'z vaqtida ishlatish uchun bo'shatishiga ishonch hosil qilishimiz kerak.

Garbage collector - o'z nomi bilan aytib turibdiki "musor teruvchi". U kompyuteringiz xotirasidagi anchadan buyon ishlatilmayotgan ma'lumotlarni musor deb o'ylab yig'ib ketadi. Ya'ni o'sha musor ma'lumotlarni o'chiradi.

Ammo ba'zan u thread ishlatayotgan ma'lumotni tasodifan musor deb o'ylab olib ketishi mumkin. Buni oldini olish uchun thread ma'lumotdan foydalanayotgan vaqtda, garbage collector ishlamasligini taminlash kerak.

GIL - Global Interpreter Lock. Bu xuddi gaichi akalarga o'xshaydi. Ubu joyda tekshiruv bo'lganda moshinalarni bitta-bitta o'tqazganidek ular ham threadlarni bitta-bitta ishlashini taminlaydi.

Python dasturlash tilini xotira menejmenti thread-safe emasligi uchun ular tunu kun ishlashadi. Ya'ni birdan ikkita moshina kirib ketib qolsa avaria yuzaga keladi deyayabman.

Bu akalarni o'z ishini yaxshi bajarganidan har bir thread o'z navbatini kelishini kutadi.

Demak qisqacha shular edi. Postda xatolar bo'lishi mumkin, yordam uchun comment tayyor.

Foydali bo'lsa share qilib qo'ying.

@otabekswe
More from @otabekswe
  1. Sep 28, 2026Voicelab da bizga eng qiziq bo'lgan mavzu bu Small Language Models (Large Language Models…
  2. Sep 10, 2026Barchamiz miriqib kuzatgan O'rgimchak Odam, Chaqmoq Makvin, Aka-uka Kreshlar (Muzlik davri…
  3. Sep 7, 2026Biz yangilik qilishdan to'xtamayabmiz. • Aisha Comet LLM modelimizni chiqardik. Platformag…
  4. Sep 4, 2026#experience Deyarli bir yarim yildan buyon intervyular jarayonida bitta savol doim so'raym…
  5. Aug 28, 2026#experience Ko'pchilik bir xil savol beradi: "Model o'zilarnikimi yoki open-source modelmi…
  6. Aug 25, 2026Voicelab Desktop V1 chiqdi (katta yangilanish va yaxshilanish qildik), har kunlik bepul kr…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →