Многопоточность Python CSV Чтение и запись Сортировка - PullRequest
0 голосов
/ 08 июля 2019

У меня есть сценарий использования для чтения из файла CSV (input.csv) и вызова конечной точки API для каждой строки CSV. И записать вывод в другой CSV (output.csv) и отсортировать вывод CSV по определенному столбцу. Я могу достичь всего этого с помощью приведенного ниже кода. Нужно выяснить, могу ли я сделать это более эффективно многопоточным способом.

def main():
start = time.time()
print "read from csv file "
input_file = 'inputs.csv'
output_file = 'outputs.csv'
read_write_csv(input_file, output_file)
print("after output-->",time.time() - start)
sort_csv(output_file)
print("after sort -->",time.time() - start)

def read_write_csv(input_file, output_file):
    with open(input_file, 'r') as csv_file:
        reader = csv.reader(csv_file)
        # Reading row by row
        count = 0
        for row in reader:
            # Opening csv result file in append mode
            with open(output_file, "a+") as csv_save:
                writer = csv.writer(csv_save)
                print "mac address ", row[0]
                writer.writerow([row[0], callExternalAPI(row[0])]),(row,))
                print "{0} devices processed so far".format(count+1)
                csv_save.close()

def sort_csv(output_file):
    with open('sorted.csv', 'w') as csv_final:
        r = csv.reader(open(output_file), delimiter=",")
        writer_final = csv.writer(csv_final)
        sortedResponse = sorted(r, key=operator.itemgetter(1), reverse=True)
        for row in sortedResponse:
            writer_final.writerow(row)
main()

Как видите, я новичок в Python, поэтому любые предложения по улучшению кода приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...