尝试并行化for循环,该循环使用参数调用函数

时间:2015-08-13 19:04:39

标签: python function for-loop parallel-processing multiprocessing

我是python的新手,尤其是多处理/多线程的新手。我无法阅读文档,或找到一个足够类似的例子来解决问题。

我试图在多个核心之间划分的部分是斜体,其余部分用于上下文。在代码的其他地方定义了三个函数,NextFunction(),QualFunction()和PrintFunction()。我不认为他们所做的对于并行化这段代码至关重要,所以我没有包括他们的定义。

你能帮助我并行化吗?

到目前为止,我已经看过了 https://docs.python.org/2/library/multiprocessing.html

Python Multiprocessing a for loop

我尝试了多线程的等价物,我也尝试了ipython.parallel。

该代码旨在从文件中提取数据,通过一些函数处理它并打印它,检查整个过程中的各种条件。

代码如下:

for (Object[] objs : results) 
{
    logger.info( Arrays.toString( objs ) );
} 

调用
def main(arg, obj1Name, obj2Name):

    global dblen

    records   = fasta(refName)

    for i,r in enumerate(records):
        s = r.fastasequence
        idnt = s.name.split()[0]
        reference[idnt] = s.seq
        names[i] = idnt
        dblen += len(s.seq)
        if taxNm == None: taxid[idnt] = GetTaxId(idnt).strip()
    records.close()
    print >> stderr, "Read it"

    # read the taxids
    if taxNm != None:
        file = open(taxNm, "r")
        for line in file:
            idnt,tax = line.strip().split()
            taxid[idnt] = tax
        file.close() 

    File1 = pysam.Samfile(obj1Name, "rb")
    File2 = pysam.Samfile(obj2Name, "rb")

    ***for obj1s,obj2s in NextFunction(File1, File2):
        qobj1 = []
        qobj2 = []
        lobj1s = list(QualFunction(obj1s))
        lobj2s = list(QualFunction(obj2s))
        for obj1,ftrs1 in lobj1s:
            for obj2,ftrs2 in lobj2s:
                if (obj1.tid == obj2.tid):
                    qobj1.append((obj1,ftrs1))
                    qobj2.append((obj2,ftrs2))
        for obj,ftrs in qobj1:
            PrintFunction(obj, ftrs, "1")
        for obj,ftrs in qobj2:
            PrintFunctiont(obj, ftrs, "2")***

    File1.close()
    File2.close()

0 个答案:

没有答案