• GIL Global interpreter lock
  • Axlat yigish (Garbage collection)
  • Mavzu: pythonda xotiraning dinamik sohasi va ko‘rsatkichlari mundarija




    Download 0.49 Mb.
    bet8/11
    Sana15.06.2023
    Hajmi0.49 Mb.
    #73375
    1   2   3   4   5   6   7   8   9   10   11
    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.

    1. ob_refcnt: reference count

    2. 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.

    Download 0.49 Mb.
    1   2   3   4   5   6   7   8   9   10   11




    Download 0.49 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Mavzu: pythonda xotiraning dinamik sohasi va ko‘rsatkichlari mundarija

    Download 0.49 Mb.