我目前使用多处理函数来分析大约10个文件。Python多重处理不等待
但是,我只想每次运行5个进程。
当我试图实现这个,它不起作用。创建更多的流程,然后创建我指定的编号。有没有一种方法可以轻松地将进程数限制为5? (Windows 7/Python 2.7)
编辑: 恐怕您的解决方案仍然无法正常工作。我会尽量在这里发布更多细节;
主要的python文件;
import python1
import python2
import multiprocessing
# parallel = [fname1, fname2, fname3, fname4, fname5, fname6, fname7, fname8, fname9, fname10]
if name == '__main__':
pool = multiprocessing.Pool(processes=max(len(parallel), 5))
print pool.map(python1.worker, parallel)
Python1文件;
import os
import time
import subprocess
def worker(sample):
command = 'perl '+sample[1].split('data_')[0]+'methods_FastQC\\fastqc '+sample[1]+'\\'+sample[0]+'\\'+sample[0]+' --outdir='+sample[1]+'\\_IlluminaResults\\_fastqcAnalysis'
subprocess.call(command)
return sample
12个文件的返回语句会在所有打开的perl模块关闭时返回。还打开了12个perl shell,而不是最大的5个。(Image;你可以清楚地看到返回语句在perl命令还没有完成之前回来,并且有超过5个进程http://oi57.tinypic.com/126a8ht.jpg)
您的方法不适合我。我在我的主要问题中发布了更多的细节。 (也许我应该提到,我导入了其他python文件,对此表示歉意) – user3589561