Python多处理使用比指定更多的CPU

时间:2018-07-11 14:20:36

标签: python multithreading multiprocessing

我是多线程领域的新手,我仍然不确定我是否理解正确。

我正在尝试对大量文件执行命令,但是我不想一次运行一个(或全部)所需的命令,而是想运行X次(X是我确定的多个线程。

我遇到的问题是,即使我将线程值指定为1,所有文件也都使用100%CPU同时处理(这是我要避免的事情)

这是代码:

import multiprocessing

cpu=3

def actual_command(filename):
    bash_command1="samtools mpileup -f folder/ref_genome.fasta -u {}".format(filename)
    bash_command2="bcftools call -mv > {}.vcf".format(filename.split('.')[0]))
    com=bash_command1+"|"+bash_command2
    subprocess.Popen(calling,shell=True)

def processing():

    list_files=[]
    with open(saved_files) as f:
    for line in f :
        list_files.append(line.strip())
    p = multiprocessing.Pool(processes=int(cpu))
    p.map(actual_command,list_files)
    p.close()
    p.join()

因为Pool让我选择了我希望python用于代码的特定部分的CPU的数量,所以我希望脚本能够处理整个文件列表,当时是3个,但看来我在做一些不正确的东西,所以我可能会寻求帮助。

谢谢

0 个答案:

没有答案