Cara melaksanakan pengkomputeran selari dan pengkomputeran teragih dalam Python
Dengan pembangunan berterusan teknologi komputer dan peningkatan prestasi perkakasan, menggunakan pemproses berbilang teras untuk pengkomputeran selari dan pengkomputeran teragih telah menjadi salah satu cara penting untuk meningkatkan prestasi program satu. Sebagai bahasa pengaturcaraan yang ringkas, mudah digunakan dan berkuasa, Python juga menyediakan banyak perpustakaan dan alatan untuk menyokong pengkomputeran selari dan pengkomputeran teragih.
Artikel ini akan memperkenalkan cara melaksanakan pengkomputeran selari dan pengkomputeran teragih dalam Python, dan memberikan contoh kod khusus.
1. Pengkomputeran Selari
Cara biasa untuk melaksanakan pengkomputeran selari dalam Python ialah menggunakan berbilang benang atau berbilang proses. Berikut ialah contoh kod untuk pengkomputeran selari menggunakan pustaka threading
dan multiprocessing
terbina dalam Python. threading
和multiprocessing
库进行并行计算的示例代码。
threading
进行并行计算import threading def calculate_square(numbers): for num in numbers: print(f"Square of {num} is {num*num}") if __name__ == '__main__': numbers = [1, 2, 3, 4, 5] threads = [] for i in range(5): t = threading.Thread(target=calculate_square, args=(numbers,)) threads.append(t) t.start() for t in threads: t.join()
上述代码中,我们定义了一个calculate_square
函数来计算数的平方,并使用threading.Thread
创建了多个线程来并行执行计算任务。最后使用join
函数等待所有线程完成计算。
multiprocessing
进行并行计算import multiprocessing def calculate_square(numbers): for num in numbers: print(f"Square of {num} is {num*num}") if __name__ == '__main__': numbers = [1, 2, 3, 4, 5] processes = [] for i in range(5): p = multiprocessing.Process(target=calculate_square, args=(numbers,)) processes.append(p) p.start() for p in processes: p.join()
上述代码中,我们使用了multiprocessing.Process
来创建多个进程来并行执行计算任务。最后使用join
函数等待所有进程完成计算。
二、分布式计算
除了使用多线程或多进程进行并行计算外,Python还提供了一些分布式计算框架,如pySpark
和dask
,可以在分布式环境中进行大规模的并行计算。
pySpark
进行分布式计算from pyspark import SparkContext def calculate_square(num): return num * num if __name__ == '__main__': sc = SparkContext() numbers = [1, 2, 3, 4, 5] rdd = sc.parallelize(numbers) squares = rdd.map(calculate_square).collect() for num, square in zip(numbers, squares): print(f"Square of {num} is {square}") sc.stop()
上述代码中,我们使用pyspark
库创建了一个SparkContext
对象,并使用parallelize
函数将数据并行化为一个RDD(弹性分布式数据集),然后使用map
函数对RDD中的每个元素进行计算。最后,使用collect
函数收集计算结果。
dask
进行分布式计算import dask @dask.delayed def calculate_square(num): return num * num if __name__ == '__main__': numbers = [1, 2, 3, 4, 5] results = [] for num in numbers: result = calculate_square(num) results.append(result) squared_results = dask.compute(*results) for num, square in zip(numbers, squared_results): print(f"Square of {num} is {square}")
上述代码中,我们使用dask.delayed
函数将每个计算任务封装为延迟计算对象,并使用dask.compute
函数执行计算任务。最后,使用zip
benang
untuk pengiraan selaricalculate_square
untuk mengira nombor Segi empat sama dan gunakan benang.Benang
untuk mencipta berbilang urutan untuk melaksanakan tugas pengiraan secara selari. Akhir sekali, gunakan fungsi join
untuk menunggu semua urutan menyelesaikan pengiraan.
multiprocessing
untuk pengkomputeran selarimultiprocessing.Process
untuk mencipta pelbagai proses untuk melaksanakan tugas pengkomputeran secara selari. Akhir sekali, gunakan fungsi join
untuk menunggu semua proses menyelesaikan pengiraan. 🎜2. Pengkomputeran teragih🎜Selain menggunakan berbilang benang atau berbilang proses untuk pengkomputeran selari, Python juga menyediakan beberapa rangka kerja pengkomputeran teragih, seperti pySpark
dan dask
, yang boleh Melakukan pengkomputeran selari secara besar-besaran dalam persekitaran teragih. 🎜pySpark
untuk pengkomputeran teragihpyspark
untuk mencipta SparkContext objek, dan gunakan fungsi parallelize
untuk menyelaraskan data ke dalam RDD (set data teragih anjal), dan kemudian gunakan fungsi map
untuk memetakan setiap elemen dikira. Akhir sekali, gunakan fungsi collect
untuk mengumpul hasil pengiraan. 🎜dask
untuk pengkomputeran teragihdask.delayed
Fungsi ini merangkum setiap tugas pengiraan sebagai objek pengiraan tertunda dan menggunakan fungsi dask.compute
untuk melaksanakan tugas pengiraan. Akhir sekali, gunakan fungsi zip
untuk menggabungkan data input dan hasil pengiraan serta mengeluarkannya. 🎜🎜Ringkasan: 🎜Artikel ini memperkenalkan cara melaksanakan pengkomputeran selari dan pengkomputeran teragih dalam Python, dan memberikan contoh kod khusus. Melalui pengkomputeran selari dan pengkomputeran teragih, prestasi dan kecekapan program boleh dipertingkatkan, yang amat penting apabila memproses data berskala besar dan tugas pengkomputeran yang kompleks. Pembaca boleh memilih kaedah dan alat yang sesuai untuk menyelaraskan dan mengagihkan tugas pengkomputeran mengikut keperluan sebenar. 🎜Atas ialah kandungan terperinci Bagaimana untuk melakukan pengkomputeran selari dan teragih dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!