Время многопроцессорной обработки Python (SamTools) больше, чем единичное
У меня есть функция, которая пытается реализовать многопроцессорность для вызова покрытия SamTools:
def samtools_coverage(filename, bam_file):
proc = os.getpid()
print ' '.join(['Process ID:', str(proc), filename])
coverage_results = samtools.depth('-b', filename, cts.BBDD_RESOURCES_PATH + bam_file)
name = '.'.join([filename.split('.')[0], 'tsv'])
coverage_dataframe = pd.DataFrame(list(map(str.split, coverage_results.splitlines())))
coverage_dataframe.to_csv(name, sep='\t', encoding='utf-8', header=None, index=None)
def f1(bam_file):
dfs = ['df1.bed', 'df2.bed', 'df3.bed', 'df4.bed']
procs = []
from multiprocessing import Process
for index, df in enumerate(dfs):
proc = Process(target=samtools_coverage, args=(df,bam_file,))
procs.append(proc)
proc.start()
for proc in procs:
proc.join()
print 'Multiprocessing ended'
return
Этот подход занимает около 8 минут, а однопроцессный - около 5, и я не знаю почему. Может я что то не так делаю?
Огромное спасибо заранее.