Я пишу сценарий python, чтобы сделать вызовы API 6000, и это занимает около 20 минут в синхронном формате. Я пытаюсь выяснить, могу ли я уменьшить время процесса до менее минуты.
Ниже приведены шаги, которые я предпринимаю
- Чтение файла CSV, в котором есть SKU (уникальный продукт идентификатор)
- Внутри функции, которую я использую для l oop для создания URL с SKU в конце
- Возьмите объект ответа и передайте другой функции (объект ответа имеет имя продукта и цену )
Как я уже говорил, в синхронном формате это занимает около 20 минут или больше, и я пытался использовать потоки, время процесса сократилось до 5 минут, но проблема с потоками - функция не возвращает ничего. Поэтому для преодоления проблемы с потоками я использовал модуль очереди, но затем время процесса увеличилось.
Я новичок в python, поэтому не уверен, что я могу сделать, чтобы сократить время процесса, я посмотрел в asyncio, но это очень запутанно и Я даже не уверен, с чего начать с asyncio.
Поэтому я добавил приведенный ниже код, не уверен, что это лучший способ справиться с этим. Это возвращает ответ через 127 секунд для 2750 вызовов API.
Я добавил 10 функций и использую 10 потоков для их вызова.
with concurrent.futures.ThreadPoolExecutor() as executor:
first = executor.submit(get_stock_info_first)
second = executor.submit(get_stock_info_second)
third = executor.submit(get_stock_info_third)
fourth = executor.submit(get_stock_info_fourth)
fifth = executor.submit(get_stock_info_fifth)
sixth = executor.submit(get_stock_info_sixth)
seventh = executor.submit(get_stock_info_seventh)
eight = executor.submit(get_stock_info_eight)
t9 = executor.submit(get_stock_info_t9)
t10 = executor.submit(get_stock_info_t10)
return_value1 = first.result()
return_value2 = second.result()
return_value3 = third.result()
return_value4 = fourth.result()
return_value5 = fifth.result()
return_value6 = sixth.result()
return_value7 = seventh.result()
return_value8 = eight.result()
return_value9 = t9.result()
return_value10 = t10.result()
Я пытаюсь понять, как я могу улучшить это код. Пожалуйста, дайте мне знать, если есть лучший способ сделать это.