我是多线程领域的新手,我仍然不确定我是否理解正确。
我正在尝试对大量文件执行命令,但是我不想一次运行一个(或全部)所需的命令,而是想运行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个,但看来我在做一些不正确的东西,所以我可能会寻求帮助。
谢谢