1. ホーム
  2. python

pythonのシンプルなプロセスベースの並列マップはありますか?

2023-10-13 18:46:21

質問

私はpythonのための簡単なプロセスベースの並列マップを探しています、つまり、関数

parmap(function,[data])

は、[data] の各要素に対して異なるプロセスで (つまり異なるコアで、しかし AFAIK では python で異なるコアで何かを実行する唯一の方法は複数のインタープリタを起動することです) 関数を実行し、結果のリストを返すものです。

このようなものは存在するのでしょうか?私は何か シンプル ということで、シンプルなモジュールがあればいいなと思います。もちろん、そのようなものが存在しない場合は、私は大きなライブラリに落ち着くでしょう:-/。

どのように解決するのですか?

あなたが必要としているのは multiprocessing.Pool() の map メソッドです。 :

map(func, iterable[, chunksize])

A parallel equivalent of the map() built-in function (it supports only
one iterable argument though). It blocks till the result is ready.

This method chops the iterable into a number of chunks which it submits to the 
process pool as separate tasks. The (approximate) size of these chunks can be 
specified by setting chunksize to a positive integ

例えば、この関数をマッピングしたい場合。

def f(x):
    return x**2

をrange(10)に変換するには、組み込みのmap()関数を使えばいいんです。

map(f, range(10))

または、multiprocessing.Pool()オブジェクトのメソッドmap()を使用します。

import multiprocessing
pool = multiprocessing.Pool()
print pool.map(f, range(10))