我是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()