繁体   English   中英

我如何并行化此python脚本

How can I parallelize this python script

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

嘿,我有一个有效的脚本,但是它可以在k组合上工作,因此可以长时间工作...我想并行化一个for循环来划分工作时间。

这是简化的代码:

fin2 = open('combi_nod.txt','r')
for lines in fin2:
    (i, j) = eval(lines)
    edgefile = open('edge.adjlist', 'a')
    count = 0
    for element in intersection(
            eval(linecache.getline('triangleset.txt', i+1)),
            eval(linecache.getline('triangleset.txt', j+1))):
        if element not in merge:
           count = 1
           break
    if count == 0:
        edgefile.write(' ' + str(j))
    edgefile.close()
fin2.close()

我怎样才能做到这一点?

编辑

经过一些修改后,我完成了多处理循环。 但是它们是一个相关的问题:

在我最初的for循环中,我搜索combi_nod.txt文件; combi_nod.txt内容是大量的itertools.combinaison (因此,现在我可以将它们存储在变量中了)

我的多处理循环使用了itertools.combinaison的列表,因为我没有看到在参数中传递文件行的方法(因此我遇到了内存问题),您有新的想法吗?

编辑2

为了澄清起见,下面是这段代码:

def intersterer(lines):
  (i, j) = lines
  counttt = 0
  for element in some_stuff:
    if element not in merge:
      counttt = 1
      break
  if counttt == 0:
     return (int(i), int(j))
  else:
     return (0, 0)

fin2 = open('combi_nod.txt','w')
for trian_c in itertools.combinations(xrange(0, counter_tri), 2):
#counter_tri is a large number
    fin2.write(str(trian_c) + "\n")
fin2.close()
fin2 = open('combi_nod.txt','r')

if __name__ == '__main__':
    pool = Pool() 
    listt = pool.map(intersterer, itertools.combinations(xrange(0, counter_tri), 2))  
    f2(listt)
    if (0,0) in listt: listt.remove((0,0))

我想有一些像这样的工作:

listt = pool.map(intersterer, fin2) 

但是我所有的测试根本不起作用...帮助...

问题暂未有回复.您可以查看右边的相关问题.
1 如何并行化这个 Python for 循环?

我正在处理需要并行化的图像处理问题。 我看过几个展示在 Python 中使用并行处理的例子,但所有这些例子的输入都是一维数组。 因此,我正在寻找一种方法来并行化对图像执行两个过程的函数。 以下代码是我需要进行标准化的代码: 这个嵌套循环如何并行化? ...

2 我可以使用全局 dict 并行化这个小的 Python 脚本吗?

我在使用 Python3 的 MBA 中遇到这个问题大约需要 2.8 秒。 由于在其核心我们有一个缓存字典,我认为哪个调用首先命中缓存并不重要,因此也许我可以从线程中获得一些收益。 不过我也不太清楚。 这比我通常提出的问题要高一些,但是有人可以引导我完成这个问题的并行化过程吗? 或者,如果它是一 ...

2015-04-26 17:02:20 3 65   python
3 如何使用多处理包在 python 中并行化 for 循环?

注意:我不需要进程/线程之间的任何通信,我只对完成信号感兴趣(这就是我将此问题作为新问题发布的原因,因为我发现所有其他示例都相互通信)。 我如何在 Python 3 中使用multiprocessing包来并行化以下代码段(最终目标是让它运行得更快): 我尝试了以下方法: 或者 在一个 ...

5 如何并行化Python软件包的编译? [重复]

这个问题已经在这里有了答案: 使用distutils加快构建过程 4个答案 在安装软件包时,某些Python软件包(例如numpy,scipy)必须编译大量源文件。 有没有办法并行化编译步骤? 如果我自己构建源代码,我可能会做类似“ make -j4”的事情来利 ...

6 如何在 python 中并行化以下代码片段?

我有一堆只按行执行的矩阵乘法运算。 我想知道如何通过并行化加速计算: 我尝试了多处理器但出于某种原因,但它的性能并不比顺序更好。 这是我的多处理器实现: 两者都产生了相同的运行时间(大约 32 秒)。 其他并行化方法如concurrent.futures没有改善运行时(如下使用): 我也 ...

7 如何并行化此代码?

我最初在ruby中写了这个,然后发现MRI根本不支持并行执行。 所以我在生锈中重写了它,但我对各种碎片的所有权有困难。 特别是当我编译它(生锈1.2稳定)时,我得到: 如果我完全注释掉线程,那么它就会编译并运行。 但我无法解析有关使线程正常工作的文档。 当涉及到知道如何解决 ...

8 如何并行化combn()?

函数combn()一次生成m个x元素的所有组合。 对于nCm小(其中n是x的元素数),这是非常快速而高效的,但是很快就会耗尽内存。 例如: 我想知道是否可以修改功能combn()使其仅生成k个选定的组合。 我们将此新函数称为selectedcombn()。 然后我们将有: ...

10 如何加速这个python循环脚本或并行化它

我目前正在编写一个脚本,该脚本接收相关矩阵的数据并计算一堆值。 这里的这一步成本非常高,我想找到加速或并行化的方法。 我曾尝试使用 Parallel(来自 python 的 joblib),但是由于 CPU 开销(至少因为我参数化它的方式),它比顺序循环慢得多。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM