Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Mencapai Paralelisme dalam Program Python

Cara Mencapai Paralelisme dalam Program Python

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-22 19:55:34228semak imbas

How to Achieve Parallelism in Python Programs

Pengaturcaraan Selari dalam Python: Penyelesaian kepada Cabaran Paralelisme

Pengaturcaraan selari bertujuan untuk meningkatkan prestasi dengan melaksanakan berbilang tugas serentak. Dalam Python, OpenMP, yang biasa digunakan dalam C , tidak mudah digunakan. Artikel ini membincangkan persoalan melaksanakan selari dalam program Python, menangani cabaran menjalankan fungsi bebas secara serentak.

Struktur kod yang diberikan:

solve1(A)
solve2(B)

memerlukan mengenal pasti fungsi bebas dalam kod. Dalam contoh ini, solve1 dan solve2 ialah dua fungsi yang berasingan.

Untuk menyelaraskan kod ini, pertimbangkan untuk menggunakan modul berbilang pemprosesan dalam Python, yang membenarkan selari berasaskan proses. Dalam senario yang diberikan, kumpulan pemprosesan boleh digunakan:

<code class="python">from multiprocessing import Pool
pool = Pool()
result1 = pool.apply_async(solve1, [A])    # evaluate "solve1(A)" asynchronously
result2 = pool.apply_async(solve2, [B])    # evaluate "solve2(B)" asynchronously
answer1 = result1.get(timeout=10)
answer2 = result2.get(timeout=10)</code>

Pendekatan ini menggunakan berbilang proses, satu untuk setiap teras CPU, untuk melaksanakan fungsi bebas secara serentak. Pembahagian kerja ini berpotensi mengurangkan masa berjalan program.

Pilihan lain untuk memetakan senarai kepada satu fungsi ialah:

<code class="python">args = [A, B]
results = pool.map(solve1, args)</code>

Adalah penting untuk ambil perhatian bahawa urutan tidak seharusnya digunakan untuk keselarian dalam Python kerana GIL (Global Interpreter Lock) menghalang berbilang benang daripada melaksanakan kod Python secara serentak, menjadikan pelaksanaan selari tidak berkesan.

Atas ialah kandungan terperinci Cara Mencapai Paralelisme dalam Program Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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