如何在Python中进行数据并行化?

时间:2016-10-27 01:42:04

标签: python python-2.7

所以,我有3维列表。例如:

if .. return Ordering ...;

我想独立处理A中的每个2维列表,但它们都有相同的过程。如果按顺序执行,我会这样做:

A=[[[1,2,3],[4,5,6],[7,8,9]],...,[[2,4,1],[1,4,6],[1,2,4]]]

但是,这需要很长时间。你能告诉我如何通过Python中的数据并行化来并行计算吗?

1 个答案:

答案 0 :(得分:2)

如果您有多个核心并处理每个二维列表是一项昂贵的操作,您可以使用Pool中的multiprocessing。这是一个在不同过程中对数字进行平方的简短示例:

import multiprocessing as mp

A = [[[1,2,3],[4,5,6],[7,8,9]],[[2,4,1],[1,4,6],[1,2,4]]]

def square(l):
    return [[x * x for x in sub] for sub in l]

pool = mp.Pool(processes=mp.cpu_count())
res = pool.map(square, A)

print res

输出:

[[[1, 4, 9], [16, 25, 36], [49, 64, 81]], [[4, 16, 1], [1, 16, 36], [1, 4, 16]]]
在将iterable拆分为工作进程时,

Pool.map的行为类似于内置map。它还有第三个参数chunksize,用于定义向工作人员提交大块的大小。