Python中實(shí)現(xiàn)多核并行計(jì)算可以使用多種方法,以下是幾種常見的方法:
multiprocessing
模塊:multiprocessing
模塊提供了一個(gè)類似于threading
模塊的接口,但是它使用多個(gè)進(jìn)程而不是多個(gè)線程??梢允褂?code>Pool類將任務(wù)分發(fā)給多個(gè)進(jìn)程,每個(gè)進(jìn)程獨(dú)立運(yùn)行。以下是一個(gè)使用multiprocessing
的例子:import multiprocessing
def worker(x):
return x*x
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=4)
result = pool.map(worker, range(10))
print(result)
concurrent.futures
模塊:concurrent.futures
是Python 3中的一個(gè)標(biāo)準(zhǔn)庫,它提供了高級的多線程和多進(jìn)程接口??梢允褂?code>ProcessPoolExecutor類來實(shí)現(xiàn)多進(jìn)程并行計(jì)算。以下是一個(gè)使用concurrent.futures
的例子:import concurrent.futures
def worker(x):
return x*x
if __name__ == '__main__':
with concurrent.futures.ProcessPoolExecutor() as executor:
result = executor.map(worker, range(10))
print(list(result))
joblib
模塊:joblib
是一個(gè)Python庫,它提供了高級的并行計(jì)算接口??梢允褂?code>Parallel類將函數(shù)應(yīng)用于一個(gè)可迭代的輸入,并指定所需的并行度。以下是一個(gè)使用joblib
的例子:from joblib import Parallel, delayed
def worker(x):
return x*x
if __name__ == '__main__':
result = Parallel(n_jobs=4)(delayed(worker)(x) for x in range(10))
print(result)
以上是幾種常見的方法,具體選擇哪種方法取決于自己的需求和環(huán)境。不同的方法有不同的特點(diǎn)和適用場景,可以根據(jù)具體情況選擇合適的方法。