最初に、複数のスレッドを持つことでプログラムがはるかに高速になるかどうかはわかりません(ただし、何が高速化されるかを知りたいと思います)
私は特別なチュートリアル/モジュールを使用せず、マルチプロセッシング インポート プロセス、ロック、キューからの基本的なプロセス/スレッド化を使用します。
マップ外の値をキューに出力する (Queue())
processess = []
results_queue = Queue()
for i in xrange(50):
p = Process(target=MyMapFunction, args=tab[i*50:(i+1) * 50])
processess.append(p)
p.start()
# Waiting and Reducing...
all_key_values = {}
for _ in xrange(50):
for k, v in results_queue.get():
all_key_values.setdefault(k, []).append(v)
# Some sort of check that threads are done but they should be
for p in processess:
p.join()
def MyMapFunction(tab):
return [(x, 2 * x) for x in tab]
マップと同じ方法でリデュースを行い、くだらない i*50 : (i+1) * 50 を修正して、例を示すために簡単に書きました。これは、Python でマルチスレッドを実行するときに使用するパターンです。