Cara menggunakan ungkapan biasa Python untuk pengaturcaraan pelbagai proses

PHPz
Lepaskan: 2023-06-22 13:58:40
asal
848 orang telah melayarinya

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
Salin selepas log masuk
  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'
]
Salin selepas log masuk
  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+')
Salin selepas log masuk
  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
Salin selepas log masuk
  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()
Salin selepas log masuk
  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])
Salin selepas log masuk
  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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan