首页 > 解决方案 > Python 多处理使用比指定更多的 CPU

问题描述

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

我正在尝试对大量文件执行命令,但不是一次运行一个(或全部)所需的命令,我想运行命令 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 个,但似乎我做的事情不正确并且所以我可能需要一些帮助。

谢谢

标签: pythonmultithreadingmultiprocessing

解决方案


推荐阅读