Python でマルチプロセッシングを実装する簡単な方法は次のとおりです。
from multiprocessing import Pool
def calculate(number):
return number
if __name__ == '__main__':
pool = Pool()
result = pool.map(calculate, range(4))
先物に基づく代替実装は
from concurrent.futures import ProcessPoolExecutor
def calculate(number):
return number
with ProcessPoolExecutor() as executor:
result = executor.map(calculate, range(4))
if __name__ == '__main__'
両方の選択肢は本質的に同じことを行いますが、顕著な違いの 1 つは、通常の句でコードを保護する必要がないことです。これは、先物の実装がこれを処理するためですか、それとも別の理由がありますか?
multiprocessing
より広い意味で、との違いは何concurrent.futures
ですか? どちらが優先されるのはいつですか?
編集:ガードはマルチプロセッシングにのみ必要であるという私の最初の仮定if __name__ == '__main__'
は間違っていました。どうやら、Windows の両方の実装でこのガードが必要ですが、UNIX システムでは必要ありません。