我目前使用多處理函數來分析大約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