Rumah >pembangunan bahagian belakang >Tutorial Python >Cara menggunakan ungkapan biasa Python untuk pengaturcaraan pelbagai proses

Cara menggunakan ungkapan biasa Python untuk pengaturcaraan pelbagai proses

PHPz
PHPzasal
2023-06-22 13:58:40897semak imbas

Python ialah bahasa pengaturcaraan yang digunakan secara meluas, dan modul ungkapan biasanya boleh digunakan untuk memadankan, mencari dan memanipulasi rentetan. Pengaturcaraan berbilang proses ialah teknologi pengaturcaraan yang memproses tugas secara selari, yang boleh meningkatkan kecekapan berjalan program. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa Python untuk pengaturcaraan berbilang proses untuk memproses sejumlah besar data dengan lebih pantas.

  1. Import perpustakaan yang diperlukan

Apabila melaksanakan pengaturcaraan berbilang proses, anda perlu menggunakan perpustakaan berbilang pemprosesan dan semula. multiprocessing digunakan untuk mencipta dan mengurus proses, dan semula digunakan untuk menggunakan ungkapan biasa.

import multiprocessing
import re
  1. Sediakan data

Sebelum menggunakan ungkapan biasa, anda perlu mempunyai beberapa data untuk dipadankan. Artikel ini akan menggunakan senarai rentetan yang perlu dipadankan sebagai data sampel.

data = [
    'xyz_123_mn1_na1234_qwe_rty',
    'pqr_234_mn2_na2345_asd_fgh',
    'hjk_345_mn3_na3456_zxc_vbn',
    'lmn_456_mn4_na4567_qaz_wsx',
    'hgo_567_mn5_na5678_edc_rfv'
]
  1. Tentukan ungkapan biasa

Sebelum melakukan padanan ungkapan biasa, anda perlu menentukan ungkapan biasa.

Ungkapan biasa dalam contoh ini digunakan untuk memadankan nombor dalam rentetan, dengan d+ bermaksud memadankan satu atau lebih kumpulan nombor.

pattern = re.compile(r'd+')
  1. Tentukan fungsi pemprosesan

Apabila melakukan pengaturcaraan berbilang proses, anda perlu terlebih dahulu mentakrifkan fungsi dan menghantar data kepada fungsi untuk diproses. Fungsi dalam contoh ini mengambil data parameter sebagai input, mengekstrak nombor yang sepadan dalam setiap rentetan dan mengembalikannya sebagai nilai pulangan.

def get_numbers(data):
    result = list()
    for string in data:
        numbers = pattern.findall(string)
        result.append(numbers)
    return result
  1. Buat kumpulan proses

Selepas menyediakan data dan fungsi, anda boleh mencipta kumpulan proses untuk memproses data secara selari.

if __name__ == '__main__':
    # 创建进程池
    pool = multiprocessing.Pool()
  1. Serahkan tugas kepada kumpulan proses

Menggunakan kaedah map() kumpulan proses, anda boleh menyerahkan tugasan kepada kumpulan proses untuk pemprosesan selari.

    # 将任务提交到进程池
    result = pool.map(get_numbers, [data])
  1. Tutup kumpulan proses dan keluarkan hasilnya

Selepas menyerahkan tugas, anda perlu menutup kumpulan proses untuk melepaskan sumber. Pada masa yang sama, hasil pemprosesan juga perlu dikeluarkan.

    # 关闭进程池
    pool.close()
    pool.join()

    # 输出结果
    print(result)

Contoh kod penuh:

import multiprocessing
import re

data = [
    'xyz_123_mn1_na1234_qwe_rty',
    'pqr_234_mn2_na2345_asd_fgh',
    'hjk_345_mn3_na3456_zxc_vbn',
    'lmn_456_mn4_na4567_qaz_wsx',
    'hgo_567_mn5_na5678_edc_rfv'
]

pattern = re.compile(r'd+')


def get_numbers(data):
    result = list()
    for string in data:
        numbers = pattern.findall(string)
        result.append(numbers)
    return result


if __name__ == '__main__':
    # 创建进程池
    pool = multiprocessing.Pool()

    # 将任务提交到进程池
    result = pool.map(get_numbers, [data])

    # 关闭进程池
    pool.close()
    pool.join()

    # 输出结果
    print(result)

Kesimpulan

Menggunakan ungkapan biasa Python dan pengaturcaraan berbilang proses boleh meningkatkan kecekapan pemprosesan data. Artikel ini menerangkan cara menggunakan ungkapan biasa Python untuk pengaturcaraan berbilang proses supaya anda boleh menyelesaikan tugas dengan lebih cepat apabila bekerja dengan jumlah data yang besar pada masa hadapan.

Atas ialah kandungan terperinci Cara menggunakan ungkapan biasa Python untuk pengaturcaraan pelbagai proses. 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