|
Mavzu: pythonda xotiraning dinamik sohasi va ko‘rsatkichlari mundarija
|
bet | 6/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, мустакил иш биоэкология озбXotirani tejash mexanizmi
Python kod ishlash tezligini oshirish va xotirani asrab-avaylash maqsadida ayrim obyektlarni “Garbage-Collecting” (keraksiz obyektlarni tozalash) paytida butunlay oʻchirib yubormasdan, keshlab qoʻyadi va kerak boʻlganda yana ishlataveradi. Bu jarayon faqat kichik qiymatli integer hamda string turlariga tegishli. Faqat kichik qiymatga ega boʻlgan string va integerlargina mana shunday keshlab qoʻyilishi mumkin.
Bu dasturga qanday taʼsir etadi? Mana bu kodga qarang: a
= 5 a
= “salom” # 5 oʻchirilsinmi? Yoʻq, uni keshlab
qoʻyamiz!
Mana bunga qaraymiz: a
= 5 # 5 obyekti yaratildi b
= 5 # keshlab
qoʻyilgan 5 bga
ham bogʻlab qoʻyildi a
is b
# har ikkala oʻzgaruvchi bitta obyektga yoʻnalgan
>>> True
is operatori shunchaki ikkala oʻzgaruvchi bitta obyektga yoʻnaltirilganmi yoʻqmi, shuni tekshiradi. Agar ikkala oʻzgaruvchining qiymati bir xil, lekin har xil obyektlarga yoʻnalgan boʻlsa, unda operator False qiymat qaytaradi.
Yuqoridagi misoldagi 5 obyekti kichik hisoblanadi, shuning uchun ham b uchun yangi 5 qiymat berilsin degan paytda Python yangi obyekt uchun xotirani band qilmasdan, uni mavjud boʻlgan qiymatga bogʻlab qoʻya qoldi. Bu kod ishlash tezligini oshirish uchun ham xizmat qiladi. Biroq kattaroq sonlar yoki kattaroq oʻlchamli stringlarda bu narsa ishlamaydi. Faqat kichik oʻlchamlilari uchun bu.
Taʼkidlaganimizdek, bu keshlash faqat kichik qiymatli integer hamda stringlarga tegishli va boshqa turlar bunda mustasno. a
= [1, 2, 3] # Yangi obyekt yaratildi b
= a
# b
ham shu obyektga bogʻlandi a
== b
# bir xil qiymatga ega
>>> True a
is b
# b
va a
aynan bitta obyektga bogʻlangan
>>> True
Endi har bir oʻzgaruvchi uchun alohida kichik string va kichik integer boʻlmagan boshqa biror obyekt yaratamiz. a
= [1, 2, 3] b
= [1, 2, 3] # a
va b
uchun alohida obyektlar yaratildi a
== b
# bir xil qiymatga ega
>>> True a
is b
# ikkalasi ikki xil, alohida obyektga bogʻlangan
>>> False
Yana qaytarib oʻtaman, bu keshlash faqat KICHIK oʻlchamli INTEGER va STRINGlar uchun amal qiladi.Bitta obyekt necha marta ishlatilgani (nechta oʻzgaruvchiga bogʻlanganligini) tekshirish uchun sys modulidagi getrefcount() metodini ishga solamiz.
import sys sys
.getrefcount
(1)
>>> 136
Bu ayni paytda 1 qiymatli integer obyekti Pythonda nechta joyda ishlatilayotganini koʻrsatadi. Albatta, biz hali buncha 1 ishlatmadik, lekin Pythonning standart modullari va boshqalarda ishlatilgan boʻlishi mumkin. Bu metod umumiy statistikani koʻrsatadi.
|
| |