Rumah pembangunan bahagian belakang Tutorial Python Cara menggunakan Numba untuk mempercepatkan pengiraan berangka dalam program Python

Cara menggunakan Numba untuk mempercepatkan pengiraan berangka dalam program Python

Aug 02, 2023 pm 05:37 PM
Pengiraan berangka memecut numba

Cara menggunakan Numba untuk mempercepatkan pengiraan berangka program Python

Pengenalan:
Python ialah bahasa yang sangat fleksibel dan mudah digunakan apabila ia berkaitan dengan pengiraan berangka. Walau bagaimanapun, oleh kerana Python ialah bahasa yang ditafsirkan, ia berjalan agak perlahan, terutamanya dalam tugas pengkomputeran berangka intensif. Untuk meningkatkan prestasi program Python, kami boleh menggunakan beberapa alat pengoptimuman dan perpustakaan. Satu perpustakaan yang sangat berkuasa ialah Numba, yang menggunakan kompilasi tepat dalam masa untuk mempercepatkan pengiraan berangka tanpa mengubah struktur kod Python. Artikel ini akan memperkenalkan cara menggunakan Numba untuk mempercepatkan pengiraan berangka program Python.

  1. Pasang Numba:
    Untuk mula menggunakan Numba, anda perlu memasangnya terlebih dahulu. Numba boleh dipasang dengan menggunakan pengurus pakej pip:

    pip install numba
    Salin selepas log masuk
  2. Penggunaan asas:
    Cara paling mudah untuk menggunakan Numba ialah menggunakan penghias untuk mengaplikasikannya pada fungsi yang perlu dipercepatkan. Numba menyokong dua penghias utama: @jit dan @njit. @jit Penghias boleh digunakan pada fungsi, menyusunnya kepada kod mesin untuk meningkatkan prestasi. Penghias @njit ialah pintasan untuk @jit(nopython=True), yang menukar fungsi kepada kod mesin tulen tanpa menggunakan penterjemah Python. Berikut ialah contoh mudah: @jit@njit@jit装饰器可以应用于函数,将其编译为机器码以提高性能。@njit装饰器是@jit(nopython=True)的一个快捷方式,它会将函数转换为不使用Python解释器的纯机器码。下面是一个简单的例子:

    from numba import jit
    
    @jit
    def sum_array(arr):
     total = 0
     for i in range(len(arr)):
         total += arr[i]
     return total
    
    arr = [1, 2, 3, 4, 5]
    result = sum_array(arr)
    print(result)
    Salin selepas log masuk

在上面的例子中,sum_array函数使用@jit装饰器进行了优化。Numba会自动推断函数中变量的类型,并将其编译为机器码。这样,函数的性能会得到大幅提升。

  1. 类型推断和类型注解:
    为了最大程度地提高性能,Numba需要确切地了解函数和变量的类型。在上面的例子中,Numba可以正确地推断出sum_array函数的类型。然而,在一些情况下,Numba可能无法自动推断类型,这时我们需要使用类型注解来帮助Numba准确地编译函数。下面是一个使用类型注解的例子:

    from numba import jit
    
    @jit('float64(float64[:])')
    def sum_array(arr):
     total = 0
     for i in range(len(arr)):
         total += arr[i]
     return total
    
    arr = [1.0, 2.0, 3.0, 4.0, 5.0]
    result = sum_array(arr)
    print(result)
    Salin selepas log masuk

在上面的例子中,我们通过@jit('float64(float64[:])')注解明确告诉Numbasum_array函数的输入和输出类型。这样,Numba可以更好地优化函数。

  1. 并行计算:
    Numba还支持并行计算,可以利用多核CPU提高计算性能。要使用并行计算,需要将@jit装饰器的并行参数设置为True

    from numba import njit
    
    @njit(parallel=True)
    def parallel_sum(arr):
     total = 0
     for i in range(len(arr)):
         total += arr[i]
     return total
    
    arr = [1, 2, 3, 4, 5]
    result = parallel_sum(arr)
    print(result)
    Salin selepas log masuk

在上面的例子中,parallel_sum函数通过将@njit(parallel=True)应用于函数上来实现并行计算。这样就可以同时利用多个CPU核心来加速计算。

  1. 使用Numba编译生成的代码:
    有时候我们可能想要查看Numba编译生成的机器码。可以通过inspect_llvminspect_asm函数来查看Numba生成的LLVM代码和汇编代码:

    from numba import jit, inspect_llvm, inspect_asm
    
    @jit
    def sum_array(arr):
     total = 0
     for i in range(len(arr)):
         total += arr[i]
     return total
    
    arr = [1, 2, 3, 4, 5]
    result = sum_array(arr)
    
    print(inspect_llvm(sum_array))  # 查看LLVM代码
    print(inspect_asm(sum_array))  # 查看汇编代码
    Salin selepas log masuk

在上面的例子中,我们使用inspect_llvminspect_asm函数来查看sum_arrayrrreee


Dalam contoh di atas, fungsi sum_array dioptimumkan menggunakan penghias @jit. Numba secara automatik menyimpulkan jenis pembolehubah dalam fungsi dan menyusunnya ke dalam kod mesin. Dengan cara ini, prestasi fungsi akan bertambah baik.

    Taip inferens dan anotasi jenis:
      Untuk memaksimumkan prestasi, Numba perlu mengetahui dengan tepat jenis fungsi dan pembolehubah. Dalam contoh di atas, Numba boleh membuat kesimpulan dengan betul jenis fungsi sum_array. Walau bagaimanapun, dalam beberapa kes, Numba mungkin tidak dapat membuat kesimpulan jenis secara automatik Dalam kes ini, kami perlu menggunakan anotasi jenis untuk membantu Numba menyusun fungsi dengan tepat. Berikut ialah contoh penggunaan anotasi jenis:
    1. rrreee
    2. Dalam contoh di atas, kami secara eksplisit memberitahu Numbasum_array melalui <code>@jit('float64(float64[:])') anotasi Jenis input dan output fungsi. Dengan cara ini, Numba boleh mengoptimumkan fungsi dengan lebih baik.
      Pengkomputeran selari: 🎜Numba juga menyokong pengkomputeran selari, yang boleh menggunakan CPU berbilang teras untuk meningkatkan prestasi pengkomputeran. Untuk menggunakan pengkomputeran selari, anda perlu menetapkan parameter selari penghias @jit kepada True: 🎜rrreee🎜🎜🎜Dalam contoh di atas, parallel_sum kod >Fungsi melaksanakan pengkomputeran selari dengan menggunakan <code>@njit(parallel=True) pada fungsi. Ini membolehkan berbilang teras CPU digunakan secara serentak untuk mempercepatkan pengiraan. 🎜
        🎜🎜Kod yang dijana menggunakan kompilasi Numba: 🎜Kadangkala kita mungkin mahu melihat kod mesin yang dijana oleh kompilasi Numba. Kod LLVM dan kod pemasangan yang dijana oleh Numba boleh dilihat melalui fungsi inspect_llvm dan inspect_asm: 🎜rrreee🎜🎜🎜Dalam contoh di atas, kami menggunakan inspect_llvm dan <code>inspect_asm berfungsi untuk melihat kod LLVM dan kod pemasangan bagi fungsi sum_array. 🎜🎜Kesimpulan: 🎜Menggunakan Numba boleh meningkatkan prestasi pengkomputeran berangka program Python dengan ketara. Dengan hanya menambahkan penghias pada fungsi yang perlu dipercepatkan, kami boleh memanfaatkan ciri kompilasi tepat dalam masa Numba untuk menyusun kod Python menjadi kod mesin yang cekap. Selain itu, Numba juga menyokong inferens jenis, anotasi jenis dan pengkomputeran selari, memberikan lebih banyak pilihan pengoptimuman. Dengan menggunakan Numba, kami boleh memanfaatkan kesederhanaan dan fleksibiliti Python dengan lebih baik sambil mencapai prestasi bahasa pengaturcaraan hampir asli. 🎜🎜Rujukan: 🎜🎜🎜https://numba.pydata.org/🎜🎜https://numba.pydata.org/numba-doc/latest/user/jit.html🎜🎜https://numba.pydata . org/numba-doc/latest/user/examples.html🎜🎜

    Atas ialah kandungan terperinci Cara menggunakan Numba untuk mempercepatkan pengiraan berangka dalam program 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)
    3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Tetapan grafik terbaik
    3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
    3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Cara Membuka Segala -galanya Di Myrise
    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)

    Mekanisme caching Laravel: mempercepatkan masa tindak balas aplikasi Mekanisme caching Laravel: mempercepatkan masa tindak balas aplikasi Aug 26, 2023 pm 08:12 PM

    Mekanisme Caching Laravel: Mempercepatkan Masa Respons Aplikasi Pengenalan: Dalam era Internet hari ini, masa respons aplikasi yang pantas adalah penting untuk pengalaman pengguna dan kejayaan perniagaan. Untuk meningkatkan prestasi dan responsif aplikasi, pembangun perlu menggunakan beberapa strategi. Salah satunya ialah menggunakan mekanisme caching. Sebagai rangka kerja PHP yang popular, Laravel menyediakan mekanisme caching yang berkuasa yang boleh membantu kami mempercepatkan masa tindak balas aplikasi kami. Artikel ini akan memperkenalkan secara terperinci penggunaan mekanisme caching Laravel

    Cara menggunakan caching dalam FastAPI untuk mempercepatkan respons Cara menggunakan caching dalam FastAPI untuk mempercepatkan respons Jul 28, 2023 pm 08:17 PM

    Cara menggunakan caching dalam FastAPI untuk mempercepatkan respons Pengenalan: Dalam pembangunan web moden, prestasi adalah kebimbangan penting. Jika aplikasi kami tidak dapat bertindak balas terhadap permintaan pelanggan dengan cepat, ia boleh menyebabkan penurunan dalam pengalaman pengguna atau bahkan pergolakan pengguna. Menggunakan cache adalah salah satu kaedah biasa untuk meningkatkan prestasi aplikasi web. Dalam artikel ini, kami akan meneroka cara menggunakan caching untuk mempercepatkan kelajuan tindak balas rangka kerja FastAPI dan menyediakan contoh kod yang sepadan. 1. Apakah cache? Cache ialah cache yang akan diakses dengan kerap

    Cara menggunakan Numba untuk mempercepatkan pengiraan berangka dalam program Python Cara menggunakan Numba untuk mempercepatkan pengiraan berangka dalam program Python Aug 02, 2023 pm 05:37 PM

    Cara menggunakan Numba untuk mempercepatkan pengiraan berangka program Python Pengenalan: Python ialah bahasa yang sangat fleksibel dan mudah digunakan apabila ia berkaitan dengan pengiraan berangka. Walau bagaimanapun, oleh kerana Python ialah bahasa yang ditafsirkan, ia berjalan agak perlahan, terutamanya dalam tugas pengkomputeran berangka intensif. Untuk meningkatkan prestasi program Python, kami boleh menggunakan beberapa alat pengoptimuman dan perpustakaan. Satu perpustakaan yang sangat berkuasa ialah Numba, yang boleh menggunakan kompilasi tepat pada masanya tanpa mengubah struktur kod Python.

    Bagaimana untuk menyelesaikan masalah kelajuan rangkaian yang perlahan pada komputer Win7 Bagaimana untuk menyelesaikan masalah kelajuan rangkaian yang perlahan pada komputer Win7 Jan 04, 2024 am 09:17 AM

    Ramai rakan yang menggunakan komputer sistem win7 mendapati kelajuan Internet adalah sangat perlahan apabila menggunakan komputer. Apa yang sedang berlaku? Mungkin terdapat sekatan tertentu pada rangkaian dalam tetapan rangkaian anda Hari ini saya akan mengajar anda cara mengalih keluar sekatan rangkaian dan membuat kelajuan rangkaian sangat pantas dan tukar nilai kepada "20MHz / 40MHzauto" sudah memadai. Mari kita lihat tutorial khusus. Kaedah untuk meningkatkan kelajuan rangkaian komputer win7 1. Editor mengambil sistem win7 sebagai contoh untuk menggambarkan Klik kanan ikon "Rangkaian" di sebelah kanan bar tugas desktop dan pilih "Rangkaian dan Pusat Perkongsian" untuk membukanya. . 2. Klik "Tukar Tetapan Penyesuai" dalam antara muka yang baru muncul, kemudian klik kanan "Sambungan Kawasan Setempat" dan pilih "Properties" untuk membuka. 3. Dalam "Local

    Bagaimana untuk membolehkan pecutan perkakasan Bagaimana untuk membolehkan pecutan perkakasan Feb 18, 2024 pm 01:41 PM

    Bagaimana untuk menghidupkan pecutan perkakasan Dengan perkembangan teknologi, pecutan perkakasan telah menjadi salah satu cara penting untuk meningkatkan prestasi komputer. Dengan menggunakan pecutan perkakasan, kita boleh mempercepatkan kelajuan berjalan komputer, meningkatkan keupayaan pemprosesan grafik, dan menjadikan komputer lebih cekap dan stabil. Jadi, bagaimana untuk menghidupkan pecutan perkakasan? Artikel ini akan memperkenalkannya kepada anda secara terperinci. Pertama, kita perlu menjelaskan konsep pecutan perkakasan. Pecutan perkakasan secara amnya merujuk kepada penggunaan perkakasan komputer khusus untuk pemprosesan pecutan, bukannya melalui perisian. Pecutan perkakasan biasa termasuk GPU (unit pemprosesan grafik) ditambah

    Bagaimana untuk mengkonfigurasi pelayan proksi Nginx untuk mempercepatkan masa tindak balas perkhidmatan web? Bagaimana untuk mengkonfigurasi pelayan proksi Nginx untuk mempercepatkan masa tindak balas perkhidmatan web? Sep 05, 2023 pm 03:24 PM

    Bagaimana untuk mengkonfigurasi pelayan proksi Nginx untuk mempercepatkan masa tindak balas perkhidmatan web? Pengenalan: Dalam era Internet hari ini, perkhidmatan Web yang pantas dan responsif adalah penting untuk pengalaman pengguna. Sebagai pelayan proksi terbalik ringan berprestasi tinggi, Nginx boleh meningkatkan kelajuan tindak balas perkhidmatan Web dengan berkesan. Artikel ini akan memperkenalkan cara mengkonfigurasi pelayan proksi Nginx untuk mempercepatkan masa tindak balas perkhidmatan web, dan memberikan arahan terperinci dengan contoh kod. Bahagian 1: Pasang dan konfigurasikan pelayan proksi Nginx Pasang Nginx dahulu

    Bagaimana untuk mengkonfigurasi dan menggunakan CDN untuk pecutan dalam Vue Bagaimana untuk mengkonfigurasi dan menggunakan CDN untuk pecutan dalam Vue Oct 15, 2023 pm 02:31 PM

    Cara mengkonfigurasi dan menggunakan CDN untuk pecutan dalam Vue Dalam projek Vue, menggunakan CDN (ContentDeliveryNetwork) boleh mempercepatkan pemuatan halaman web dan meningkatkan pengalaman pengguna dengan berkesan. Teknologi CDN mengedarkan fail sumber statik ke pelayan di pelbagai lokasi di seluruh dunia, membolehkan pengguna mendapatkan sumber dengan cepat daripada pelayan yang paling hampir dengan pengguna, mengurangkan masa penghantaran data dan kelewatan. Berikut akan memperkenalkan secara terperinci cara mengkonfigurasi dan menggunakan CDN untuk pecutan dalam Vue. Pertama, kita perlu mencari a

    Bagaimana untuk mengoptimumkan kelajuan permulaan dalam win7 Bagaimana untuk mengoptimumkan kelajuan permulaan dalam win7 Dec 26, 2023 pm 01:11 PM

    Jika sistem pengendalian yang dipasang pada komputer kita ialah win7, maka jika sesetengah rakan menghadapi masa boot yang lebih lama semasa digunakan dan ingin mengoptimumkan komputer mereka, mula-mula kita boleh cuba melakukan operasi berkaitan pada komputer, matikan beberapa item permulaan. Atau anda boleh menggunakan perisian pecutan pihak ketiga untuk melaksanakan pengoptimuman yang berkaitan. Mari kita lihat langkah terperinci untuk melihat bagaimana editor melakukannya~ Bagaimana untuk mengoptimumkan dan mempercepatkan permulaan win7 1. Jangan letak terlalu banyak fail dan ikon pada desktop komputer, yang akan memperlahankan tindak balas komputer untuk memasang perisian pada pemacu C. 2. Cuba tetapkan IP kepada IP statik, yang boleh mengurangkan masa permulaan komputer dan masa pantulan selepas memasuki desktop. 3. Sistem semasa juga menduduki jumlah memori yang agak besar Jika perlu, tambahkan lebih banyak memori.

    See all articles