Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Niaga Hadapan Serentak dalam Python: Melancarkan Tugasan Selari dengan Mudah

Niaga Hadapan Serentak dalam Python: Melancarkan Tugasan Selari dengan Mudah

WBOY
WBOYasal
2024-08-05 22:52:02904semak imbas

Concurrent Futures in Python: Launching Parallel Tasks with Ease

Mencapai prestasi optimum melalui pelaksanaan selari adalah penting. Python, bahasa pengaturcaraan serba boleh, menyediakan beberapa alat untuk pelaksanaan serentak. Salah satu modul yang paling berkuasa dan mesra pengguna ialah concurrent.futures, yang membolehkan pembangun menjalankan panggilan secara tidak segerak. Dalam artikel ini, kami akan meneroka kefungsian modul ini dan cara memanfaatkannya untuk pelbagai tugas, termasuk operasi fail dan permintaan web.

Gambaran Keseluruhan Niaga Hadapan Serentak

Modul concurrent.futures menawarkan kelas abstrak yang dikenali sebagai Executor, yang memudahkan pelaksanaan panggilan secara tidak segerak. Walaupun ia tidak boleh digunakan secara langsung, pembangun boleh menggunakan subkelas konkritnya, seperti ThreadPoolExecutor dan ProcessPoolExecutor, untuk melaksanakan tugas secara serentak.

Ciri-ciri Utama

  1. Kaedah Hantar: Kaedah hantar ialah tempat keajaiban berlaku. Ia menjadualkan fungsi boleh dipanggil untuk dilaksanakan secara tak segerak dan mengembalikan objek Masa Depan. Boleh panggil dilaksanakan dengan hujah yang disediakan, membolehkan pembangun menjalankan tugas latar belakang dengan lancar.
   with ThreadPoolExecutor(max_workers=1) as executor:
       future = executor.submit(pow, 323, 1235)
       print(future.result())

Dalam contoh ini, kami menggunakan ThreadPoolExecutor untuk menaikkan nombor kepada kuasa dalam urutan berasingan.

  1. Kaedah Peta: Kaedah peta ialah satu lagi ciri hebat yang membolehkan melaksanakan fungsi merentas berbilang iterable input secara serentak. Ia mengumpul iterables serta-merta dan melaksanakan panggilan secara tidak segerak.
   results = executor.map(load_url, URLS, timeout=2)

Fungsi ini amat berguna apabila anda mempunyai senarai tugasan yang ingin anda jalankan secara selari.

Aplikasi Praktikal: Menyalin Fail

Pertimbangkan senario di mana anda perlu menyalin berbilang fail dengan cekap. Coretan kod berikut menunjukkan cara menggunakan ThreadPoolExecutor untuk menyalin fail serentak:

import concurrent.futures
import shutil

files_to_copy = [
    ('src2.txt', 'dest2.txt'),
    ('src3.txt', 'dest3.txt'),
    ('src4.txt', 'dest4.txt'),
]

with concurrent.futures.ThreadPoolExecutor() as executor:
    futures = [executor.submit(shutil.copy, src, dst) for src, dst in files_to_copy]
    for future in concurrent.futures.as_completed(futures):
        print(future.result())

Contoh ini memanfaatkan fungsi shutil.copy untuk melaksanakan salinan fail secara selari, meningkatkan prestasi dengan ketara untuk operasi fail berskala besar.

Mengendalikan Permintaan Web Secara serentak

Satu lagi aplikasi menarik bagi modul concurrent.futures ialah mendapatkan semula kandungan daripada berbilang URL sekaligus. Di bawah ialah pelaksanaan mudah menggunakan ThreadPoolExecutor untuk mengambil halaman web:

import concurrent.futures
import urllib.request

URLS = [
    'http://www.foxnews.com/',
    'http://www.cnn.com/',
    'http://europe.wsj.com/',
    'http://www.bbc.co.uk/',
    'http://nonexistant-subdomain.python.org/',
]

def load_url(url, timeout):
    with urllib.request.urlopen(url, timeout=timeout) as conn:
        return conn.read()

with concurrent.futures.ThreadPoolExecutor() as executor:
    results = executor.map(load_url, URLS, timeout=2)
    for result in results:
        print(result)

Kod ini ialah cara mudah untuk mendapatkan semula kandungan web dengan cepat, menunjukkan betapa mudahnya untuk melaksanakan pelaksanaan serentak dalam projek anda.

Kesimpulan

Modul concurrent.futures menyediakan cara yang berkesan untuk melaksanakan tugas secara tidak segerak dalam Python, memudahkan proses mencapai keselarian dalam aplikasi anda. Melalui kelas Pelaksana dan kaedah seperti penyerahan dan peta, pembangun boleh mengurus tugas latar belakang dengan cekap, sama ada ia melibatkan operasi fail, permintaan web atau sebarang proses terikat I/O yang lain.

Dengan memasukkan teknik ini ke dalam amalan pengaturcaraan anda, anda akan dapat mencipta aplikasi yang lebih responsif dan cekap, meningkatkan prestasi dan pengalaman pengguna. Selamat mengekod!

Atas ialah kandungan terperinci Niaga Hadapan Serentak dalam Python: Melancarkan Tugasan Selari dengan Mudah. 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