Rumah >pembangunan bahagian belakang >Tutorial Python >Masalah dan penyelesaian pengaturcaraan selari dalam Python
Masalah dan penyelesaian pengaturcaraan selari dalam Python memerlukan contoh kod khusus
Dengan populariti pemproses berbilang teras, kerumitan tugas pengkomputeran, dan peningkatan permintaan untuk pemprosesan data, penggunaan pengaturcaraan selari dapat meningkatkan pelaksanaan program dengan berkesan kecekapan. Sebagai bahasa pengaturcaraan peringkat tinggi, Python adalah ringkas, mudah dibaca dan mudah ditulis Ia juga menyediakan beberapa penyelesaian pengaturcaraan selari.
Namun, pengaturcaraan selari bukanlah satu tugas yang mudah. Dalam Python, isu pengaturcaraan selari biasa termasuk keselamatan benang, akses sumber dikongsi, penjadualan tugas dan pengagregatan hasil. Beberapa masalah pengaturcaraan selari biasa diterangkan di bawah, dengan penyelesaian yang sepadan dan contoh kod.
import threading # 定义线程锁 lock = threading.Lock() # 共享资源 count = 0 def increment(): global count for _ in range(1000000): # 加锁 lock.acquire() count += 1 # 释放锁 lock.release() # 创建多个线程 threads = [] for _ in range(5): t = threading.Thread(target=increment) threads.append(t) # 启动线程 for t in threads: t.start() # 等待所有线程执行完毕 for t in threads: t.join() print(count)
import concurrent.futures # 共享资源 count = 0 def increment(): global count for _ in range(1000000): count += 1 # 创建线程池 pool = concurrent.futures.ThreadPoolExecutor(max_workers=5) # 提交任务 futures = [pool.submit(increment) for _ in range(5)] # 等待所有任务执行完毕 concurrent.futures.wait(futures) # 关闭线程池 pool.shutdown() print(count)
multiprocessing.Pool
dan concurrent.futures.ThreadPoolExecutor
, dsb. Berikut ialah contoh penggunaan concurrent.futures.ThreadPoolExecutor
untuk penjadualan tugas: multiprocessing.Pool
和concurrent.futures.ThreadPoolExecutor
等。下面是一个使用concurrent.futures.ThreadPoolExecutor
进行任务调度的示例:import concurrent.futures # 任务列表 tasks = [1, 2, 3, 4, 5] def process_task(task): return task * 2 # 创建线程池 pool = concurrent.futures.ThreadPoolExecutor(max_workers=5) # 提交任务 futures = [pool.submit(process_task, task) for task in tasks] # 获取结果 results = [future.result() for future in concurrent.futures.as_completed(futures)] # 关闭线程池 pool.shutdown() print(results)
concurrent.futures.wait
和concurrent.futures.as_completed
import concurrent.futures # 任务列表 tasks = [1, 2, 3, 4, 5] def process_task(task): return task * 2 # 创建线程池 pool = concurrent.futures.ThreadPoolExecutor(max_workers=5) # 提交任务 futures = [pool.submit(process_task, task) for task in tasks] # 等待所有任务执行完毕 concurrent.futures.wait(futures) # 获取结果 results = [future.result() for future in futures] # 关闭线程池 pool.shutdown() print(results)
Dalam pengaturcaraan selari, hasil pelaksanaan berbilang tugasan perlu menjadi Ringkasan. Python menyediakan fungsi seperti concurrent.futures.wait
dan concurrent.futures.as_completed
untuk menangani masalah pengagregatan hasil. Berikut ialah contoh ringkasan hasil:
Atas ialah kandungan terperinci Masalah dan penyelesaian pengaturcaraan selari dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!