У меня есть следующий код, который считывает несколько файлов и помещает некоторую информацию или каждую строку в базу данных MySQL
. Однако этот процесс идет медленно.Чтение в параллельных многократных файлах в Python
def extractAF(files_vcf):
...
for infile_name in sorted(files_vcf):
print infile_name
###single files
vcf_reader = vcf.Reader(open(infile_name, 'r'))
for record in vcf_reader:
snp_position='_'.join([record.CHROM, str(record.POS)])
ref_F = float(record.INFO['DP4'][0])
ref_R = float(record.INFO['DP4'][1])
alt_F = float(record.INFO['DP4'][2])
alt_R = float(record.INFO['DP4'][3])
AF = (alt_F+alt_R)/(alt_F+alt_R+ref_F+ref_R)
if not snp_position in snp_dict:
sql_insert_table = "INSERT INTO snps VALUES ('" + snp_position + "'," + ",".join(list(('0') for _ in range(len(files_vcf)))) + ")"
cursor = db1.cursor()
cursor.execute(sql_insert_table)
db1.commit()
snp_dict.append(snp_position)
sql_update = "UPDATE snps SET " + str(z) + "g=" + str(AF) + " WHERE snp_pos='" + snp_position + "'";
cursor = db1.cursor()
cursor.execute(sql_update)
db1.commit()
z+=1
return snp_dict
Как я могу прочитать несколько файлов одновременно, чтобы ускорить мою программу?
Вы пробовали модуль «многопроцессорности»? – Wolph
Замедление может быть связано с фиксацией базы данных после каждой строки. Если вы можете совершать только один раз в 1000 строк, это может улучшить скорость. – styts
Как бы это сделать, @styts – user2979409