【问题标题】:Python - parallel construction of a matrixPython - 矩阵的并行构造
【发布时间】:2014-10-20 23:11:20
【问题描述】:

python 中并行创建大型稀疏矩阵 M 的正确方法是什么?理想情况下,每个线程将负责为行的子集设置值。生成的矩阵将输入到分类器。 python 全局解释器锁会妨碍高效的并行化吗?

假设输入列表 I 由元组 (i, j, k) 组成。希望为 I 中的所有元组设置 M[i,j] = k。

M = scipy.sparse.dok_matrix((num_rows, num_cols))
for i, j, k in I:
    M[i, j] = k

【问题讨论】:

  • 这是一个相当开放的问题;有很多方法可以做并行。我个人的股票之一是 ipython-parallel,但你应该看看教程而不是在这里问。
  • “python 全局解释器锁会阻止高效的并行化吗?” 是的。
  • 您的数据集有多大?您要处理多少矩阵行?
  • 10 亿行 x 10K 列

标签: python parallel-processing


【解决方案1】:

理论上,矩阵的所有更新都可以同时进行,假设元组列表不包含不一致的数据,即每个矩阵元素最多设置一次。

当 GIL 不受影响并且矩阵可以在任意数量的线程之间共享时,这一切都归结为 scipy.sparse.dok_matrix 是否能够接受并发更新。

不幸的是,scipy.sparse.dok_matrix 文档和 http://wiki.scipy.org/ParallelProgramming 似乎都没有回答这个问题。

【讨论】:

    猜你喜欢
    • 2012-06-30
    • 2016-10-04
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多