python - 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 个,但似乎我做的事情不正确并且所以我可能需要一些帮助。
谢谢
解决方案
推荐阅读
- node.js - 如何使用嵌套的“类型”属性在 Mongoose 模式中定义非必填字段?
- firebase - Firebase 实时数据库事务最大重试错误,特定十进制数 63.99999999999999
- c++ - 未找到 CMake 中的 OpenSSL::SSL
- javascript - 具有堆叠粘性组标题的可滚动 div
- r - 按数字暗名对矩阵中的行和列进行排序
- node.js - MongoDB - 如何根据其他字段的存在来计算字段?
- android - 原生闪屏宽度和高度
- java - Java比较三个字符串数组并使用Binarysearch
- php - box/spout - 使用十六进制颜色与预定义颜色时的大量内存使用
- python - auc = roc_auc_score(y_test, probs) 代码中的错误