如何并行化这个python脚本

如何并行化这个python脚本,python,parallel-processing,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(linecac

嘿,我有一个工作脚本,但它对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) 
但是我所有的测试都不起作用。。。
帮助…

很难从简化的代码中分辨出来,但是进程的大部分时间都花在哪里,计算
eval()
s还是读/写文件?我所有的变量都写在文件中,以最大限度地减少RAM的使用。我的脚本生成了大量数据,所以我无法将它们全部存储在内存中。我唯一希望并行化的进程是第一个for循环。我正在考虑一次做八行,因为第二个for循环嵌套在第一个for循环中,所以这个语句有点混乱。如果您需要从并发进程或线程同时对同一个文件进行写访问,那么将所有内容写入文件可能会使问题变得复杂。在并发编程中,对任何共享资源的访问都必须由锁、信号量或类似的东西控制。我可以拆分初始文件,并在最后一步合并。让我们谈谈即将出版的这期杂志。就像我说的,这是我要并行化的第一个循环。