Время многопроцессорной обработки 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, и я не знаю почему. Может я что то не так делаю?

Огромное спасибо заранее.

0 ответов

Другие вопросы по тегам