|
Mavzu: pythonda xotiraning dinamik sohasi va ko‘rsatkichlari mundarija
|
bet | 8/11 | Sana | 15.06.2023 | Hajmi | 0.49 Mb. | | #73375 |
Bog'liq kurs ishi. Pythonda nuqta chiziq va ranglar kkk7, Aniq va tabiiy fanlar metodikasi, Reja Xaara bazislarida spektral analiz-fayllar.org, Sanoat korxonasida marketing faoliyatini tashkil etish. Reja 1 -fayllar.org, Mavzu. Xorijda ijtimoiy pedagogikaning rivojlanish tarixi, 23-24, maruza, 7. ALLAMOV (1), 1 1 Topshiriq EKOLOGIK MADANIYAT VA BARQAROR TARAQQIYOT ASOSLARI.docx tt, test, test 2, test 3, test 4, мустакил иш биоэкология озбPython obyektlari
Pythonda hama narsa obyekt deb eshitgan bo'lsangiz kerak, misol uchun str malumot turi, int malumot turi, ularning barchasi obyekt. CPythonda barcha obyekt ishlatadigan PyObject degan struct bor.
Struct bu C dasturlash tilida turli malumot turlarini birlashtiruvchi strukturadir. OOP qiyosida qaraydigan bo'lsak u faqat atributlari bor lekin metodlari yo'q klassga o'xshaydi.
PyObject bu barcha Python obyektlarning eng katta bobosi hisoblanadi, va u faqat ikkita narsadan tashkil topadi.
ob_refcnt: reference count
ob_type: pointer to another object
ob_refcnt Pythonda garbage collection uchun ishlatiladi. ob_type esa boshqa bir malumot turiga havola (dict, int va h.kz)
Har bir obyektning o'zi uchun specific xotira beruvchi boshqaruvchisi bo'ladi (memory allocator), u obyektga qarab qanaqa qilib shu obyektga taaluqli malumotno xotiraga yozish uchun qanaqa qilib xotira olishni biladi, shu bilan birga xotirani deallocation qiladigan ham manager bo'ladi, xotirga ishlatilmay qolganda uni boshqa maqsadlar uchun ozod qiladi.
Xotira ajratish va xotirani ozod qilish haqida gap ketganda bir muhim narsani esda tutish lozim. Xotira bu barcha uchun birdek bo'lishiladigan joy, shu sababli har xil xotira boshqaruvchisi bitta xotiraga yozishga harakat qilganda nojuya natijalarga olib kelishi mumkin.
GIL Global interpreter lock
Pythonda thread tarqatilgan xotira ustida amal bajarayotganda, boshqa thread uning dumini bosib olmasligi uchun GIL yechim hisoblanadi. Misol uchun ikkita shoir bitta listga sher yozsa oxirgi natija tushunarsiz text bo'lib qoladi, GIL bu muammoga bitta listga bir vaqtda faqat bitta shoir sher yozoladi degan qoida bilan buning oldini oladi.
Axlat yig'ish (Garbage collection)
Yuqorida misol keltirilgan shoirlar tushunchasida misol qiladigon bo'lsak, biror varoqdagi sher endi bizga kerak bo'lmaydigan bo'lsa biz undan qutilishimiz mumkin, yani o'chirib boshqa sher yozishimiz mumkin.
O'chirib yuborilgan eski sherni biz 0 (nol) ga tushirib qo'yilgan ob_refcnt yani object reference countga o'xshatishimiz mumkin.
Pythonda ref_count har xil sabablarga ko'ra o'sib borishi mumkin, misol uchun yangi o'zgaruvchiga biriktirilsa.
numbers = [1, 2, 3]
# Reference count = 1
more_numbers = numbers
# Reference count = 2
ref_count o'zgaruvchini funksiyaga argument qilib bergan taqdirda ham o'zgaradi
total = sum(numbers)
ref_count o'zgarishiga oxirgi misol bu, agar siz o'zgaruvchini list elementlari qilib bergan taqdiringizda ref_count oshib boradi.
matrix = [numbers, numbers, numbers]
Pythonda istalgan obyektni ref_countini bilib olishingiz mumkin, bu funksiya sys modulning getrefcount() funksiyasi orqali amalga oshiriladi, lekin yodingizda bo'lsin, obyektning refcountini ko'rish uning ref_countini yana bittaga oshiradi.
|
| |