Jadual Kandungan
Pengenalan
Ketahui tentang pemprosesan selari
Benang Berbilang dalam Python
Contoh
Output
Pemprosesan berbilang dalam Python
Python pengaturcaraan tak segerak
Example Domain
Pilih kaedah yang betul
Kesimpulan
Rumah pembangunan bahagian belakang Tutorial Python Pemprosesan selari dalam Python

Pemprosesan selari dalam Python

Sep 11, 2023 pm 11:49 PM
python multithreading pemprosesan selari

Pemprosesan selari dalam Python

Pengenalan

Dalam persekitaran digital yang serba pantas hari ini, adalah penting bagi pembangun dan saintis data untuk menyelesaikan tugasan yang sukar secara pengiraan dengan cekap. Nasib baik, Python menawarkan keupayaan pemprosesan selari yang berkuasa kerana kebolehsuaian dan ekosistemnya yang luas. Kita boleh mencapai peningkatan prestasi yang ketara dengan memecahkan masalah yang sukar kepada aktiviti yang lebih kecil, lebih terurus dan menyelesaikannya secara serentak.

Keupayaan pemprosesan selari Python membolehkan kami menggunakan sumber komputer yang tersedia untuk melaksanakan aktiviti seperti mengikis web, simulasi saintifik dan analisis data dengan lebih pantas dan cekap. Dalam artikel ini, kami akan memulakan perjalanan melalui pemprosesan selari dalam Python. Kami akan memeriksa beberapa kaedah, termasuk berbilang pemprosesan, pengaturcaraan tak segerak dan berbilang benang, dan mempelajari cara menggunakannya dengan berkesan untuk memintas sekatan jalan prestasi dalam sistem anda. Sertai kami kerana kami menyedari kuasa penuh pemprosesan selari dalam Python dan mencapai tahap prestasi dan produktiviti yang baharu.

Ketahui tentang pemprosesan selari

Membahagikan kerja kepada subtugas yang lebih kecil dan menjalankannya serentak pada berbilang pemproses atau teras dipanggil pemprosesan selari. Pemprosesan selari boleh mengurangkan masa pelaksanaan keseluruhan program dengan ketara dengan menggunakan sumber pengkomputeran yang tersedia dengan cekap. Pengaturcaraan asynchronous, multiprocessing, dan multithreading hanyalah beberapa kaedah pemprosesan selari yang ditawarkan Python.

Benang Berbilang dalam Python

Menggunakan kaedah berbilang benang, banyak benang berjalan serentak dalam proses yang sama dan berkongsi memori yang sama. Multithreading boleh dilaksanakan dengan mudah menggunakan modul threading Python. Walau bagaimanapun, menggunakan multithreading dalam Python mungkin tidak mempunyai kesan mempercepatkan pada operasi intensif CPU kerana Global Interpreter Lock (GIL) hanya membenarkan satu thread untuk melaksanakan kod bait Python pada masa yang sama. Walau bagaimanapun, multithreading boleh berguna untuk tugas intensif I/O kerana ia membenarkan utas menjalankan operasi lain sementara menunggu operasi I/O selesai.

Mari lihat contoh menggunakan multi-threading untuk memuat turun berbilang halaman web:

Contoh

import threading import requests 
 
def download_page(url): 
    response = requests.get(url)    
print(f"Downloaded {url}") 
 
urls = [ 
    "https://example.com", 
    "https://google.com", 
    "https://openai.com" 
] 
 
threads = [] 
 for url in 
 urls: 
    thread = threading.Thread(target=download_page,
args=(url,))     thread.start()    threads.append(thread) 
 
for thread in threads: 
    thread.join() 
Salin selepas log masuk

Output

Downloaded https://example.com 
Downloaded https://google.com 
Downloaded https://openai.com 
Salin selepas log masuk

Memandangkan coretan kod di atas boleh melakukan berbilang muat turun pada masa yang sama, coretan kod ini memuat turun setiap URL dalam urutannya sendiri. Fungsi join() memastikan bahawa utas utama menunggu setiap utas selesai sebelum meneruskan.

Pemprosesan berbilang dalam Python

Berbilang proses sepadan dengan berbilang benang Dengan menggunakan berbilang proses, setiap proses mempunyai ruang ingatan sendiri, memberikan keselarian sebenar. Modul berbilang pemprosesan Python menyediakan antara muka peringkat tinggi untuk melaksanakan pelbagai proses. Multiprocessing sesuai untuk tugas intensif CPU kerana setiap proses berjalan dalam penterjemah Python bebas, mengelakkan batasan multithreading GIL.

Berbilang proses digunakan dalam kod di bawah. Setelah kelas kumpulan telah menghasilkan satu set proses pekerja, kaedah map() mengagihkan beban kepada proses yang tersedia. Senarai keputusan ialah koleksi hasil.

Pertimbangkan contoh berikut, di mana kami menggunakan berbilang proses untuk mengira kuasa dua setiap integer dalam senarai:

Contoh

import multiprocessing 
 
def square(number):    
return number ** 2 
 
numbers = [1, 2, 3, 4, 5] 
 
with multiprocessing.Pool() as pool: 
    results = pool.map(square, numbers) 
 
print(results) 
Salin selepas log masuk

Output

[1, 4, 9, 16, 25] 
Salin selepas log masuk

Python pengaturcaraan tak segerak

Dengan memanfaatkan operasi tanpa sekatan, pengaturcaraan tak segerak membolehkan pelaksanaan proses intensif I/O yang cekap. Terima kasih kepada pakej asyncio, Python boleh mencipta kod tak segerak menggunakan coroutine, gelung acara dan niaga hadapan. Apabila aplikasi dalam talian dan API menjadi lebih popular, pengaturcaraan tak segerak menjadi semakin penting.

Coroutine fetch_page() dalam contoh kod di bawah menggunakan aiohttp untuk mendapatkan halaman web secara tidak segerak. Kaedah main() menjana senarai kerja dan kemudian menggunakan asyncio.gather() untuk melaksanakan kerja ini secara serentak. Untuk menunggu tugasan selesai dan menerima keputusan, gunakan kata kunci await.

Mari lihat contoh pengambilan berbilang halaman web secara tidak segerak menggunakan asyncio dan aiohttp:

Contoh

import asyncio 
import aiohttp 
 
async def fetch_page(url):     async with aiohttp.ClientSession() as session:         async with session.get(url) as response: 
            return await response.text() 
 
async def main(): 
    urls = [ 
        "https://example.com", 
        "https://google.com", 
        "https://openai.com" 
    ] 
 
    tasks = [fetch_page(url) for url in urls]     pages = await asyncio.gather(*tasks)     
print(pages) 
 
asyncio.run(main()) 
Salin selepas log masuk

Output

['<!doctype html>\n<html>\n<head>\n    <title>Example Domain</title>\n\n    <meta 
charset="utf-8" />\n    <meta http-equiv="Content-type"content="text/html; charset=utf-8" />\n    <meta name="viewport" content="width=device-width, initialscale=1" />\n    <style type="text/css">\n    body {\n        background-color: #f0f0f2;\n  margin: 0;\n        padding: 0;\n        font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n        \n    }\n    div {\n        width: 600px;\n        margin: 5em auto;\n  padding: 50px;\n        background-color: #fff;\n        border-radius: 1em;\n    }\n    a:link, a:visited {\n        color: #38488f;\n        text-decoration: none;\n    }\n    @media (maxwidth: 700px) {\n        body {\n            background-color: #fff;\n        }\n        div {\n  width: auto;\n            margin: 0 auto;\n            border-radius: 0;\n            padding: 1em;\n        }\n    }\n    </style>    \n</head>\n\n<body>\n<div>\n    <h1 id="Example-Domain">Example Domain</h1>\n    <p>This domain is for use in illustrative examples in documents. You may use this\n    domain in literature without prior coordination or asking for permission.</p>\n    <p><a href="https://www.iana.org/domains/example">More information...</a></p>\n</div>\n</body>\n</html>', '<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for." name="description"><meta content="noodp" name="robots"><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/logos/doodles/2021/mom-
and-dad-6116550989716480.2-law.gif" itemprop="image"><link href="/logos/doodles/2021/mom-and-dad-6116550989716480.2-law.gif" rel="icon" type="image/gif"><title>Google</title><script nonce="sJwM0Ptp5a/whzxPtTD8Yw==">(function(){window.google={kEI:'cmKgYY37A7 K09QPhzKuACw',kEXPI:'1354557,1354612,1354620,1354954,1355090,1355493,13556
83,3700267,4029815,4031109,4032677,4036527,4038022,4043492,4045841,4048347,4
048490,4052469,4055589,4056520,4057177,4057696,4060329,4060798,4061854,4062 531,4064696,406 '
Salin selepas log masuk

Pilih kaedah yang betul

Teknik pemprosesan selari Python berbeza-beza bergantung pada keadaan khusus tugas. Berikut ialah beberapa garis panduan untuk membantu anda membuat keputusan termaklum:

Untuk aktiviti I/O-intensif, di mana kebanyakan masa pelaksanaan dihabiskan untuk menunggu operasi input/output, multi-threading adalah sesuai. Ia sesuai untuk tugas seperti memuat turun fail, menggunakan API dan memanipulasi fail. Disebabkan oleh Global Interpreter Lock (GIL) Python, multithreading mungkin tidak mempercepatkan aktiviti intensif CPU dengan ketara.

Sebaliknya, pemprosesan berbilang sesuai untuk tugas terikat CPU yang melibatkan pengiraan intensif. Ia mencapai keselarian sebenar dengan menggunakan pelbagai proses, setiap satu dengan ruang ingatannya sendiri, memintas batasan GIL. Walau bagaimanapun, ia menanggung overhed tambahan dari segi penggunaan memori dan komunikasi antara proses.

Pengaturcaraan tak segerak yang dilakukan menggunakan perpustakaan seperti asyncio berguna untuk aktiviti intensif I/O yang melibatkan operasi rangkaian. Ia menggunakan operasi I/O tanpa sekatan supaya kerja boleh diteruskan tanpa menunggu setiap operasi selesai. Pendekatan ini menguruskan berbilang sambungan serentak dengan cekap, menjadikannya sesuai untuk pembangunan pelayan web, interaksi API Web dan pengikisan web. Pengaturcaraan tak segerak meminimumkan masa menunggu untuk operasi I/O, memastikan responsif dan kebolehskalaan.

Kesimpulan

Keupayaan pemprosesan selari Python memberi peluang untuk meningkatkan kecekapan dalam tugas yang memerlukan pengiraan yang rumit. Sama ada anda memilih untuk menggunakan pengaturcaraan multithreading, multiprocessing atau tak segerak, Python menyediakan alatan dan modul yang diperlukan untuk memanfaatkan concurrency dengan berkesan. Dengan memahami sifat aktiviti dan memilih teknologi yang sesuai, anda boleh memaksimumkan faedah pemprosesan selari dan mengurangkan masa pelaksanaan. Jadi, teruskan meneroka dan memanfaatkan sepenuhnya keselarian Python untuk mencipta aplikasi yang lebih pantas dan cekap.

Atas ialah kandungan terperinci Pemprosesan selari 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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

PHP dan Python: Paradigma yang berbeza dijelaskan PHP dan Python: Paradigma yang berbeza dijelaskan Apr 18, 2025 am 12:26 AM

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

Memilih antara php dan python: panduan Memilih antara php dan python: panduan Apr 18, 2025 am 12:24 AM

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Adakah sambungan vscode berniat jahat? Adakah sambungan vscode berniat jahat? Apr 15, 2025 pm 07:57 PM

Sambungan kod VS menimbulkan risiko yang berniat jahat, seperti menyembunyikan kod jahat, mengeksploitasi kelemahan, dan melancap sebagai sambungan yang sah. Kaedah untuk mengenal pasti sambungan yang berniat jahat termasuk: memeriksa penerbit, membaca komen, memeriksa kod, dan memasang dengan berhati -hati. Langkah -langkah keselamatan juga termasuk: kesedaran keselamatan, tabiat yang baik, kemas kini tetap dan perisian antivirus.

Bolehkah kod studio visual digunakan dalam python Bolehkah kod studio visual digunakan dalam python Apr 15, 2025 pm 08:18 PM

Kod VS boleh digunakan untuk menulis Python dan menyediakan banyak ciri yang menjadikannya alat yang ideal untuk membangunkan aplikasi python. Ia membolehkan pengguna untuk: memasang sambungan python untuk mendapatkan fungsi seperti penyempurnaan kod, penonjolan sintaks, dan debugging. Gunakan debugger untuk mengesan kod langkah demi langkah, cari dan selesaikan kesilapan. Mengintegrasikan Git untuk Kawalan Versi. Gunakan alat pemformatan kod untuk mengekalkan konsistensi kod. Gunakan alat linting untuk melihat masalah yang berpotensi lebih awal.

Boleh kod vs dijalankan di Windows 8 Boleh kod vs dijalankan di Windows 8 Apr 15, 2025 pm 07:24 PM

Kod VS boleh dijalankan pada Windows 8, tetapi pengalaman mungkin tidak hebat. Mula -mula pastikan sistem telah dikemas kini ke patch terkini, kemudian muat turun pakej pemasangan kod VS yang sepadan dengan seni bina sistem dan pasangnya seperti yang diminta. Selepas pemasangan, sedar bahawa beberapa sambungan mungkin tidak sesuai dengan Windows 8 dan perlu mencari sambungan alternatif atau menggunakan sistem Windows yang lebih baru dalam mesin maya. Pasang sambungan yang diperlukan untuk memeriksa sama ada ia berfungsi dengan betul. Walaupun kod VS boleh dilaksanakan pada Windows 8, disyorkan untuk menaik taraf ke sistem Windows yang lebih baru untuk pengalaman dan keselamatan pembangunan yang lebih baik.

Cara menjalankan program di terminal vscode Cara menjalankan program di terminal vscode Apr 15, 2025 pm 06:42 PM

Dalam kod VS, anda boleh menjalankan program di terminal melalui langkah -langkah berikut: Sediakan kod dan buka terminal bersepadu untuk memastikan bahawa direktori kod selaras dengan direktori kerja terminal. Pilih arahan Run mengikut bahasa pengaturcaraan (seperti python python your_file_name.py) untuk memeriksa sama ada ia berjalan dengan jayanya dan menyelesaikan kesilapan. Gunakan debugger untuk meningkatkan kecekapan debug.

PHP dan Python: menyelam mendalam ke dalam sejarah mereka PHP dan Python: menyelam mendalam ke dalam sejarah mereka Apr 18, 2025 am 12:25 AM

PHP berasal pada tahun 1994 dan dibangunkan oleh Rasmuslerdorf. Ia pada asalnya digunakan untuk mengesan pelawat laman web dan secara beransur-ansur berkembang menjadi bahasa skrip sisi pelayan dan digunakan secara meluas dalam pembangunan web. Python telah dibangunkan oleh Guidovan Rossum pada akhir 1980 -an dan pertama kali dikeluarkan pada tahun 1991. Ia menekankan kebolehbacaan dan kesederhanaan kod, dan sesuai untuk pengkomputeran saintifik, analisis data dan bidang lain.

See all articles