Я очищаю огромный дамп данных CSV. Мне удалось разделить один большой файл на более мелкие, используя gawk
, первоначально используя unix SE Query в виде следующего потока:
BIG CSV file -> use gawk script + bash -> Small CSV files based on columns
У меня около 12 разделенных csv файлы, созданные с использованием вышеупомянутого потока, каждый из которых содержит ~ 170 тыс. строк.
Я использую python3.7.7
на Windows 10 машине.
Код
def convert_raw_data(incoming_line, f_name, line_counter):
# do some decoding magic
# catch exception and try to log it into the a logger file under `f_name.log`
def convert_files(dir_name, f_name, dest_dir_name):
# Open the CSV file
# Open the Destination CSV file to store decoded data
line_counter = 1
for line in csv_reader:
# convert raw HEX to Floating point values using `convert_raw_data` function call
line_counter = line_counter + 1
status = convert_raw_data(csv)
if status:
return f'All good for {f_name}.'
else:
return f'Failed for {f_name}'
def main():
# Parse Arguments Logic here
# get CSV Files and their respective paths
csv_files = get_data_files_list(args.datasets)
# decode raw data from each split csv file as an individual process
with concurrent.futures.ProcessPoolExecutor() as executor:
results = [ executor.submit(convert_files, dir_name, f_name, dest_dir) for dir_name, f_name in csv_files ]
for f in concurrent.futures.as_completed(results):
print(f.result())
Требования
I wi sh, чтобы установить регистратор logging
с именем f_name.log
в каждом процессе, порожденном ProcessPoolExecutor
, и хотите хранить журналы с соответствующим именем проанализированного файла. Я не уверен, следует ли мне использовать что-то вроде:
def convert_raw_data(...., logger):
logger.exception(raw_data_here)
def convert_files(....):
logger = logging.basicConfig(filename=f_name, level=logging.EXCEPTION)
или есть ли предостережения для использования модулей ведения журнала в многопроцессорной среде?