Моя программа работает с двумя объектами:
1) Путь к файлу с записями в следующем формате: имя файла - контрольная сумма
2) Путь к каталогу, в котором находятся эти файлы сохранен.
Программа предназначена для вычисления контрольной суммы для каждого файла в указанном каталоге, чтобы определить, является ли каждая контрольная сумма правильной.
Я придумала это решение (код упрощен) :
import multiprocessing
import os
def get_checksum(fname):
# code that returns the checksum
def verify_checksum(dir_path, filenames):
for fname in filenames.keys():
# if file is present in the specified directory
current_file_path = os.path.join(dir_path, fname)
if os.path.isfile(current_file_path):
if get_checksum(current_file_path) == filenames[fname]:
print("Checksum is correct")
else:
print("Checksum is incorrect")
filenames = []
counter = 0
# create a dictionary[filename] = checksum
with open(filepath, 'r') as file:
for line in file:
fname, checksum = line.split()
filenames[fname] = checksum
counter += 1
with multiprocessing.Pool(processes=counter) as pool:
for fname in filenames.keys():
pool.apply_async(verify_checksum, (dir_path, fname, ))
Я перебрал файл с парами имя-файла-контрольной суммы, чтобы создать словарь и подсчитать элементы, чтобы использовать счетчик для выделения пула. Не могли бы вы предложить более эффективное решение?