Jadual Kandungan
Berinteraksi dengan cache LRU dalam Python
Contoh coretan kod
Penjelasan
Contoh
Output
ialah:
Example
示例
Explanation
结论
Rumah pembangunan bahagian belakang Tutorial Python Kosongkan cache LRU dalam Python

Kosongkan cache LRU dalam Python

Sep 10, 2023 pm 12:57 PM
python Jelas lru cache

Kosongkan cache LRU dalam Python

Dalam artikel ini, kita akan belajar cara mengosongkan cache LRU yang dilaksanakan dalam Python Sebelum kita menyelami lebih dalam aspek pengekodan, mari kita terokai sedikit tentang apa itu LRU cache adalah dan mengapa ia popular

.

LRU Cache, juga dikenali sebagai cache yang paling kurang digunakan baru-baru ini, ialah struktur data yang digunakan secara meluas dalam sains komputer untuk meningkatkan prestasi aplikasi dengan mengurangkan masa yang diperlukan untuk mengakses data yang kerap digunakan. Cache LRU menyimpan bilangan item yang terhad dan memadam item yang paling kurang digunakan baru-baru ini apabila cache menjadi penuh. Ini membolehkan item yang paling kerap digunakan kekal dalam cache dan diakses dengan cepat, manakala item yang kurang kerap digunakan dialih keluar untuk memberi ruang kepada item baharu.

LRU cache amat berguna dalam aplikasi yang mengambil data adalah mahal, seperti cakera I/O atau akses rangkaian. Dalam kes ini, caching data yang kerap digunakan dalam ingatan boleh meningkatkan prestasi aplikasi dengan ketara dengan mengurangkan bilangan operasi mahal yang diperlukan untuk mendapatkan semula data.

Cache LRU digunakan dalam pelbagai jenis aplikasi, termasuk pangkalan data, pelayan web, penyusun dan sistem pengendalian Ia amat berguna dalam aplikasi yang memerlukan akses kerap kepada sejumlah besar data, seperti enjin carian dan platform analitik data.

Berinteraksi dengan cache LRU dalam Python

Dalam Python 3.2 dan ke atas, modul functools termasuk ciri berkuasa yang membolehkan pengaturcara berinteraksi dengan Cache LRU. Ciri ini boleh digunakan dengan menggunakan penghias yang diletakkan di atas definisi kelas atau fungsi ini kepada fungsi yang memerlukan akses berubah dan perubahan yang kerap, prestasi fungsi boleh dipertingkatkan dengan ketara.

Apabila bekerja dengan fungsi yang memerlukan pemprosesan sejumlah besar data atau pengiraan yang kompleks, penggunaan Cache LRU boleh mempercepatkan masa pelaksanaan Ini kerana Cache LRU menyimpan data yang kerap−digunakan dalam memori, membenarkan fungsi untuk mengakses dan memproses data dengan pantas tanpa memerlukan kos masa−memakan operasi I/O.

Dengan menggunakan Cache LRU, pengaturcara Python boleh mengurangkan masa pelaksanaan aplikasi mereka dan meningkatkan prestasi mereka Ini amat penting apabila bekerja dengan aplikasi berskala besar atau yang memerlukan pemprosesan data masa nyata, di mana peningkatan kecil dalam prestasi boleh menghasilkan keuntungan yang ketara.

Ringkasnya, modul functools dalam Python menyediakan mekanisme yang berkuasa untuk berinteraksi dengan LRU Cache. Dengan menggunakan LRU Cache, pengaturcara boleh meningkatkan prestasi aplikasi dengan mengurangkan masa yang diperlukan untuk capaian berubah yang mahal dan menukar operasi. Menggunakan Cache LRU amat berfaedah dalam aplikasi yang memerlukan pemprosesan data masa nyata atau mengendalikan sejumlah besar data.

Sekarang kita tahu serba sedikit tentang cache LRU, mari kita gunakannya dalam Python

.

Kaedah cache clear() modul functools dalam Python boleh digunakan untuk mengosongkan cache LRU (paling kurang digunakan).

Cache dikosongkan sepenuhnya menggunakan teknik ini.

Contoh coretan kod

from functools import lru_cache

@lru_cache(maxsize=128)
def some_function(arg):
	# function implementation
	return result

# clear the cache
some_function.cache_clear()
Salin selepas log masuk

Penjelasan

Dalam contoh di atas, some_function dihiasi dengan lru_cache, yang mencipta cache LRU dengan saiz maksimum 128. Untuk mengosongkan cache, anda boleh memanggil kaedah cache_clear() pada objek fungsi, yang akan mengalih keluar semua entri daripada cache.

Sila ambil perhatian bahawa memanggil cache_clear() akan mengosongkan cache semua parameter. Jika anda ingin mengosongkan cache untuk parameter tertentu, anda boleh menggunakan pelaksanaan cache yang berbeza, seperti functools.typed_lru_cache, yang membolehkan anda menggunakan kaedah cache_clear() dengan parameter untuk mengosongkan cache bagi parameter tertentu.

Sekarang mari tulis contoh yang berfungsi menggunakan kod di atas.

Pertimbangkan kod yang ditunjukkan di bawah.

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

from functools import lru_cache

@lru_cache(maxsize=128)
def fibonacci(n):
	"""Return the nth Fibonacci number."""
	if n < 2:
    	return n
	return fibonacci(n-1) + fibonacci(n-2)

# Call the function with some arguments to populate the cache
print(fibonacci(10))  # Output: 55
print(fibonacci(15))  # Output: 610

# Clear the cache
fibonacci.cache_clear()

# Call the function again to see that it's recomputed
print(fibonacci(10))  # Output: 55
Salin selepas log masuk

Penjelasan

Dalam contoh ini, fungsi fibonacci menggunakan lru_cache untuk memoize hasilnya Cache mempunyai saiz maksimum 128, jadi fungsi akan mengingati keputusan 128 panggilan terkini.

.

Kami mula-mula memanggil fungsi dengan beberapa argumen untuk mengisi cache Kemudian, kami mengosongkan cache menggunakan kaedah cache_clear() Akhir sekali, kami memanggil fungsi itu semula dengan argumen yang sama untuk melihat bahawa ia dikira semula dan bukannya menggunakan hasil cache.

Untuk menjalankan kod di atas, kita perlu menjalankan arahan yang ditunjukkan di bawah.

Perintah

python3 main.py
Salin selepas log masuk
Salin selepas log masuk

Sebaik sahaja kita menjalankan arahan di atas, kita harus mengharapkan output yang serupa dengan yang ditunjukkan di bawah.

Output

55
610
55
Salin selepas log masuk

Jika kita mahu, kita juga boleh mencetak maklumat keadaan semasa cache juga dalam kod di atas, untuk melakukan itu kita perlu menggunakan kaedah cache_info()

.

Pertimbangkan kod dikemas kini yang ditunjukkan di bawah. Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

from functools import lru_cache

@lru_cache(maxsize=128)
def fibonacci(n):
	"""Return the nth Fibonacci number."""
	if n < 2:
    	return n
	return fibonacci(n-1) + fibonacci(n-2)

# Call the function with some arguments to populate the cache
print(fibonacci(10))  # Output: 55
print(fibonacci(15))  # Output: 610

print(fibonacci.cache_info())

# Clear the cache
fibonacci.cache_clear()

# Call the function again to see that it's recomputed
print(fibonacci(10))  # Output: 55

print(fibonacci.cache_info())
Salin selepas log masuk

Penjelasan

Dalam kod di atas, penghias cache @lru menerima saiz maksimum parameter pilihan, yang menentukan saiz maksimum cache.

Jika saiz maksimum tidak ditentukan, saiz cache adalah tidak terhad.

如果缓存已满,最近最少使用的项目将被移除,以为新项目腾出空间。

The function object itself houses the cache that @lru cache uses.

Accordingly, the cache is private to the function and is not shared by other versions of the function. Also, the different part here is the cache_info() method, which is used to print information about the LRU cache used by the fibonacci function. This includes the number of cache hits and misses, as well as the size of the cache.

要运行上述代码,我们需要运行下面显示的命令。

Command

python3 main.py
Salin selepas log masuk
Salin selepas log masuk

一旦我们运行上述命令,我们应该期望输出类似于下面所示的输出。

Output

55
610
CacheInfo(hits=14, misses=16, maxsize=128, currsize=16)
55
CacheInfo(hits=8, misses=11, maxsize=128, currsize=11)
Salin selepas log masuk

现在我们已经看到了如何清除缓存,让我们在另一个例子中使用它。

考虑下面显示的代码。

Example

的中文翻译为:

示例

from functools import lru_cache

@lru_cache(maxsize=128)
def edit_distance(s1, s2):
	"""
	Compute the edit distance between two strings using dynamic programming.
	"""
	if not s1:
    	return len(s2)
	elif not s2:
    	return len(s1)
	elif s1[0] == s2[0]:
    	return edit_distance(s1[1:], s2[1:])
	else:
    	d1 = edit_distance(s1[1:], s2) + 1  # deletion
    	d2 = edit_distance(s1, s2[1:]) + 1  # insertion
    	d3 = edit_distance(s1[1:], s2[1:]) + 1  # substitution
    	return min(d1, d2, d3)

# Call the function with some arguments to populate the cache
print(edit_distance("kitten", "sitting"))  # Output: 3
print(edit_distance("abcde", "vwxyz"))	# Output: 5

# Clear the cache
edit_distance.cache_clear()

# Call the function again to see that it's recomputed
print(edit_distance("kitten", "sitting"))  # Output: 3
Salin selepas log masuk

Explanation

In this example, the edit_distance function computes the edit distance between two strings using dynamic programming. The function is recursive and has three base cases: if one of the strings is empty, the edit distance is the length of the other string; if the first characters of the two strings are the same, the edit distance is the edit distance between the rest of the strings; otherwise, the edit distance is the minimum of the edit distances for the three possible operations: deletion, insertion, and substitution.

为了提高函数的性能,我们使用lru_cache来缓存其结果。缓存的最大大小为128,因此函数将记住最近128次调用的结果。这样可以避免为相同的参数重新计算编辑距离。

We first call the function with some arguments to populate the cache. Then, we clear the cache using the cache_clear() method. Finally, we call the function again with the same argument to see that it's recomputed instead of using the cached result.

请注意,edit_distance函数只是一个示例,计算两个字符串之间的编辑距离还有更高效的方法(例如使用Wagner−Fischer算法)。这个示例的目的是演示如何使用lru_cache来记忆递归函数的结果。

结论

总之,在某些情况下,清除Python中的LRU(最近最少使用)缓存可能是重要的,以管理内存并确保缓存保持最新。LRU缓存是Python的functools模块提供的内置缓存机制,可以根据函数的参数缓存函数的结果。@lru_cache装饰器用于为函数启用缓存,可以指定maxsize来设置缓存大小的限制。

修饰的函数对象的cache clear()方法可用于清除LRU缓存。通过清除所有缓存结果,该技术使缓存保持最新,同时释放内存。如果函数被更新或输入数据经常变化,清除缓存可能是必要的。

总的来说,LRU缓存提供了一种简单而有效的方法来提高Python函数的性能,特别是那些计算密集型的函数或者被多次使用相同参数调用的函数。在必要时清除缓存可以帮助保持通过缓存获得的性能提升,并确保缓存在减少计算时间方面保持有效。

Atas ialah kandungan terperinci Kosongkan cache LRU dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Menggunakan Log Debian Apache Untuk Meningkatkan Prestasi Laman Web Cara Menggunakan Log Debian Apache Untuk Meningkatkan Prestasi Laman Web Apr 12, 2025 pm 11:36 PM

Artikel ini akan menerangkan bagaimana untuk meningkatkan prestasi laman web dengan menganalisis log Apache di bawah sistem Debian. 1. Asas Analisis Log Apache Log merekodkan maklumat terperinci semua permintaan HTTP, termasuk alamat IP, timestamp, url permintaan, kaedah HTTP dan kod tindak balas. Dalam sistem Debian, log ini biasanya terletak di direktori/var/log/apache2/access.log dan /var/log/apache2/error.log. Memahami struktur log adalah langkah pertama dalam analisis yang berkesan. 2. Alat Analisis Log Anda boleh menggunakan pelbagai alat untuk menganalisis log Apache: Alat baris arahan: grep, awk, sed dan alat baris arahan lain.

Python: Permainan, GUI, dan banyak lagi Python: Permainan, GUI, dan banyak lagi Apr 13, 2025 am 12:14 AM

Python cemerlang dalam permainan dan pembangunan GUI. 1) Pembangunan permainan menggunakan pygame, menyediakan lukisan, audio dan fungsi lain, yang sesuai untuk membuat permainan 2D. 2) Pembangunan GUI boleh memilih tkinter atau pyqt. TKInter adalah mudah dan mudah digunakan, PYQT mempunyai fungsi yang kaya dan sesuai untuk pembangunan profesional.

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular Apr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Bagaimana Debian Readdir Bersepadu Dengan Alat Lain Bagaimana Debian Readdir Bersepadu Dengan Alat Lain Apr 13, 2025 am 09:42 AM

Fungsi Readdir dalam sistem Debian adalah panggilan sistem yang digunakan untuk membaca kandungan direktori dan sering digunakan dalam pengaturcaraan C. Artikel ini akan menerangkan cara mengintegrasikan Readdir dengan alat lain untuk meningkatkan fungsinya. Kaedah 1: Menggabungkan Program Bahasa C dan Pipeline Pertama, tulis program C untuk memanggil fungsi Readdir dan output hasilnya:#termasuk#termasuk#includeintMain (intargc, char*argv []) {dir*dir; structdirent*entry; if (argc! = 2) {

Peranan Sniffer Debian dalam Pengesanan Serangan DDOS Peranan Sniffer Debian dalam Pengesanan Serangan DDOS Apr 12, 2025 pm 10:42 PM

Artikel ini membincangkan kaedah pengesanan serangan DDoS. Walaupun tiada kes permohonan langsung "debiansniffer" ditemui, kaedah berikut boleh digunakan untuk pengesanan serangan DDOS: Teknologi Pengesanan Serangan DDo Sebagai contoh, skrip Python yang digabungkan dengan perpustakaan Pyshark dan Colorama boleh memantau trafik rangkaian dalam masa nyata dan mengeluarkan makluman. Pengesanan berdasarkan analisis statistik: dengan menganalisis ciri statistik trafik rangkaian, seperti data

Python dan Masa: Memanfaatkan masa belajar anda Python dan Masa: Memanfaatkan masa belajar anda Apr 14, 2025 am 12:02 AM

Untuk memaksimumkan kecekapan pembelajaran Python dalam masa yang terhad, anda boleh menggunakan modul, masa, dan modul Python. 1. Modul DateTime digunakan untuk merakam dan merancang masa pembelajaran. 2. Modul Masa membantu menetapkan kajian dan masa rehat. 3. Modul Jadual secara automatik mengatur tugas pembelajaran mingguan.

Nginx SSL Sijil Tutorial Debian Nginx SSL Sijil Tutorial Debian Apr 13, 2025 am 07:21 AM

Artikel ini akan membimbing anda tentang cara mengemas kini sijil NginxSSL anda pada sistem Debian anda. Langkah 1: Pasang Certbot terlebih dahulu, pastikan sistem anda mempunyai pakej CertBot dan Python3-CertBot-Nginx yang dipasang. Jika tidak dipasang, sila laksanakan arahan berikut: sudoapt-getupdateudoapt-getinstallcertbotpython3-certbot-nginx Langkah 2: Dapatkan dan konfigurasikan sijil Gunakan perintah certbot untuk mendapatkan sijil let'Sencrypt dan konfigurasikan nginx: sudoCertBot-ninx ikuti

Cara mengkonfigurasi pelayan https di debian openssl Cara mengkonfigurasi pelayan https di debian openssl Apr 13, 2025 am 11:03 AM

Mengkonfigurasi pelayan HTTPS pada sistem Debian melibatkan beberapa langkah, termasuk memasang perisian yang diperlukan, menghasilkan sijil SSL, dan mengkonfigurasi pelayan web (seperti Apache atau Nginx) untuk menggunakan sijil SSL. Berikut adalah panduan asas, dengan mengandaikan anda menggunakan pelayan Apacheweb. 1. Pasang perisian yang diperlukan terlebih dahulu, pastikan sistem anda terkini dan pasang Apache dan OpenSSL: sudoaptDateSudoaptgradesudoaptinsta

See all articles