Saya selalu membaca kodenya untuk menghitung waktu seperti ini:
%timeit function()
Bisakah Anda menjelaskan apa artinya "%" di sini?
Menurut saya, "%" selalu digunakan untuk mengganti sesuatu dalam string, seperti% s berarti mengganti string,% d mengganti data, tapi saya tidak tahu tentang kasus ini.
Jawaban:
%timeit
adalah fungsi ajaib ipython , yang dapat digunakan untuk mengatur waktu bagian kode tertentu (Pernyataan eksekusi tunggal, atau metode tunggal).Dari dokumen:
Untuk menggunakannya, misalnya jika kita ingin mengetahui apakah menggunakan
xrange
lebih cepat daripada menggunakanrange
, Anda cukup melakukan:In [1]: %timeit for _ in range(1000): True 10000 loops, best of 3: 37.8 µs per loop In [2]: %timeit for _ in xrange(1000): True 10000 loops, best of 3: 29.6 µs per loop
Dan Anda akan mendapatkan pengaturan waktu untuk mereka.
Keuntungan utama dari
%timeit
adalah:bahwa Anda tidak perlu mengimpor
timeit.timeit
dari pustaka standar , dan menjalankan kode beberapa kali untuk mencari tahu pendekatan mana yang lebih baik.% timeit secara otomatis akan menghitung jumlah proses yang diperlukan untuk kode Anda berdasarkan total jendela eksekusi 2 detik.
Anda juga dapat menggunakan variabel konsol saat ini tanpa meneruskan seluruh cuplikan kode seperti dalam kasus
timeit.timeit
untuk membuat variabel yang dibangun di lingkungan lain yang waktu itu berfungsi.sumber
%timeit function()
timer.timeit
- apakah itu nama modul yang sebenarnya?10000 loops, best of 3: 29.6 µs per loop
dapat diartikan sebagai: (1.) ekspresi dijalankan 10000 kali untuk mendapatkan total waktu (2.) kemudian total waktu dibagi dengan 10000 untuk mendapatkan waktu "per loop" dan (3.) total waktu komputasi selesai 3 kali dan terakhir (4.) dari 3 waktu total, total waktu minimum (alias "terbaik dari 3") digunakan sebagai output. apakah interpretasi saya benar, ya / tidak?Ini dikenal sebagai sihir garis di iPython. Mereka unik karena argumen mereka hanya meluas ke akhir baris saat ini, dan sihir itu sendiri benar-benar terstruktur untuk pengembangan baris perintah.
timeit
digunakan untuk mengatur waktu eksekusi kode.Jika Anda ingin melihat semua sihir yang dapat Anda gunakan, Anda cukup mengetik:
untuk mendapatkan daftar sihir garis dan sihir sel.
Beberapa informasi ajaib lebih lanjut dari dokumentasi di sini :
Bergantung pada apakah Anda dalam mode garis atau sel , ada dua cara berbeda untuk menggunakan
%timeit
. Pertanyaan Anda menggambarkan cara pertama:In [1]: %timeit range(100)
vs.
In [1]: %%timeit : x = range(100) :
sumber
IPython mencegatnya, mereka disebut perintah sihir bawaan, inilah daftarnya: https://ipython.org/ipython-doc/dev/interactive/magics.html
Anda juga dapat membuat sihir khusus Anda sendiri, https://ipython.org/ipython-doc/dev/config/custommagics.html
Anda
timeit
ada di sini https://ipython.org/ipython-doc/dev/interactive/magics.html#magic-timeitsumber
Saya hanya ingin menambahkan keuntungan berguna lainnya menggunakan% timeit untuk menjawab dengan mu 無bahwa:
PS: Saya tahu ini harus menjadi komentar untuk menjawab di atas tetapi saya saat ini tidak memiliki reputasi yang cukup untuk itu, semoga apa yang saya tulis akan bermanfaat bagi seseorang dan membantu saya mendapatkan reputasi yang cukup untuk berkomentar di lain waktu.
sumber
Saya hanya ingin menambahkan poin yang sangat halus tentang %% waktu itu. Mengingat itu menjalankan "magics" di sel , Anda akan mendapatkan kesalahan ...
UsageError: Fungsi garis ajaib
%%timeit
tidak ditemukan... jika ada kode / baris komentar di atas %% timeit. Dengan kata lain, pastikan bahwa %% timeit adalah perintah pertama di sel Anda.
Aku tahu itu poin kecil yang semua ahli akan katakan ya, tapi hanya ingin menambahkan setengah senku untuk penyihir muda yang memulai dengan trik sulap.
sumber
Magics baris diawali dengan karakter % dan berfungsi seperti panggilan baris perintah OS: mereka mendapatkan argumen di baris lainnya, di mana argumen diteruskan tanpa tanda kurung atau tanda kutip. Sihir sel diawali dengan %% ganda , dan merupakan fungsi yang tidak hanya dijadikan argumen di baris lainnya, tetapi juga baris di bawahnya dalam argumen terpisah.
sumber