У меня есть список с более чем 500 элементами, и я хочу запустить функцию для каждого элемента в списке одновременно, как я могу это сделать?
Это решение ускорит процесси, кроме того, мой код будет короче.
Я использую одну библиотеку для Instagram, и получение значений из этой библиотеки требует много времени. Я справился со скоростью с потоками, но я имею дело с большим количеством значений в списке. Каждый элемент - это имя пользователя, поэтому я хочу зайти в профиль из 500 пользователей одновременно и собрать из него некоторые данные (фотография, количество комментариев, количество лайков ...).
Для каждогопользователю требуется около 1-2 секунд для сбора данных. Это означает, что сбор данных для 1000 пользователей займет 1000-2000 секунд. Поэтому я пытаюсь сделать это быстрее, запустив одну и ту же функцию в одно и то же время для каждого элемента в списке.
Я читал немного о threading
, и я сделал что-то вроде этого, но что, если у меня есть500 элементов в списке:
import threading
list_of_results = []
list_of_values = [1,2,3]
def one(list_of_values, list_of_results):
result = 0
for i in range(0,5000):
result = list_of_values[0] + i
list_of_results.append(result)
def two(list_of_values, list_of_results):
result = 0
for i in range(0,5000):
result = list_of_values[1] + i
list_of_results.append(result)
def three(list_of_values, list_of_results):
result = 0
for i in range(0,5000):
result = list_of_values[2] + i
list_of_results.append(result)
t1 = threading.Thread(target = one, args = (list_of_values, list_of_results))
t2 = threading.Thread(target = two, args = (list_of_values, list_of_results))
t3 = threading.Thread(target = three, args = (list_of_values, list_of_results))
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
print(list_of_results)