Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan modul berbilang pemprosesan untuk pengurusan berbilang proses dalam Python 3.x

Cara menggunakan modul berbilang pemprosesan untuk pengurusan berbilang proses dalam Python 3.x

WBOY
WBOYasal
2023-07-31 18:36:231459semak imbas

Cara menggunakan modul berbilang pemprosesan untuk pengurusan berbilang proses dalam Python 3.x

Pengenalan:
Dalam Python, populariti CPU berbilang teras menjadikan pengaturcaraan berbilang proses sebagai kemahiran penting. Modul multiprocessing ialah perpustakaan standard dalam Python untuk mengendalikan pelbagai proses. Artikel ini akan memperkenalkan cara menggunakan modul berbilang pemprosesan untuk pengurusan berbilang proses, dan menggambarkannya dengan contoh kod.

1. Pengenalan kepada modul berbilang pemprosesan
Modul berbilang pemprosesan Python menyediakan pembungkus yang boleh memetakan program Python untuk dijalankan pada berbilang proses. Modul pemproses berbilang selamat untuk benang dan menyediakan lebih banyak kefungsian daripada modul benang.

2. Fungsi biasa dan kelas modul pemproses berbilang

  1. pemprosesan berbilang.Kelas proses
    pemprosesan berbilang.Kelas proses digunakan untuk mencipta dan mengurus proses. Ia mempunyai 4 kaedah utama:
  2. start(): Mulakan proses dan panggil kaedah run().
  3. run(): Fungsi kemasukan proses perlu ditakrifkan oleh pengguna.
  4. sertai([masa tamat]): Tunggu sehingga proses tamat. Jika tamat masa tidak ditentukan, ia akan menunggu sehingga proses tamat.
  5. is_alive(): Tentukan sama ada proses masih berjalan. Fungsi
  6. multiprocessing.current_process()
    multiprocessing.current_process() mengembalikan objek Proses bagi proses semasa. Fungsi
  7. multiprocessing.active_children()
    multiprocessing.active_children() mengembalikan senarai proses anak yang sedang berjalan, termasuk hanya proses anak yang dicipta oleh proses semasa.
  8. multiprocessing.Pool class
    multiprocessing.Pool class digunakan untuk mencipta kumpulan proses, yang boleh menguruskan pelaksanaan berbilang proses dengan mudah. Kaedah yang paling biasa digunakan ialah:
  9. apply(func, args): laksanakan fungsi secara serentak dan kembalikan hasilnya.
  10. apply_async(func, args): Jalankan fungsi secara tidak segerak dan kembalikan objek AsyncResult.
  11. close(): Tutup kumpulan proses dan tidak lagi menerima tugasan baharu.
  12. join(): Proses utama menunggu semua proses kanak-kanak tamat.

3. Contoh kod menggunakan modul multiprocessing parameter dan cetak nama. Kemudian, gunakan multiprocessing.Pool dalam program utama untuk mencipta kumpulan proses yang mengandungi 4 proses. Seterusnya, kami menggunakan kaedah apply_async untuk melaksanakan fungsi pekerja secara tak segerak, menghantar parameter i dan menambahkannya ke senarai hasil. Akhir sekali, tunggu semua proses menyelesaikan pelaksanaan melalui kaedah pool.close() dan pool.join(). Akhir sekali, kami memperoleh hasil pelaksanaan melalui kaedah result.get() dan mencetaknya.

Melaksanakan kod di atas akan menghasilkan keputusan berikut:

import multiprocessing

def worker(name):
    print('Worker %s' % name)
    return name

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=4)
    results = []
    
    for i in range(4):
        result = pool.apply_async(worker, args=(i,))
        results.append(result)

    pool.close()
    pool.join()
    
    for result in results:
        print(result.get())

Ringkasan:

Dengan menggunakan modul berbilang pemprosesan, kami boleh melaksanakan pengaturcaraan berbilang proses dengan mudah. Artikel ini memperkenalkan fungsi dan kelas biasa modul pemproses berbilang dan menunjukkan cara menggunakannya melalui kod sampel. Menggunakan modul berbilang pemprosesan boleh menggunakan CPU berbilang teras dengan lebih baik dan meningkatkan kecekapan pelaksanaan program.

Rujukan:
[1] Dokumentasi rasmi Python - modul berbilang pemprosesan https://docs.python.org/3/library/multiprocessing.html

Atas ialah kandungan terperinci Cara menggunakan modul berbilang pemprosesan untuk pengurusan berbilang proses dalam Python 3.x. 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