如何并行化这个python脚本

时间:2015-01-14 20:06:55

标签: python parallel-processing

嘿,我有一个工作脚本,但它适用于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的列表,因为我还没有看到在参数中传递文件行的方法(所以我有内存问题),你有新想法吗?

EDIT2

为了澄清,这里是代码,就像这一点:

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) 

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

0 个答案:

没有答案
相关问题