Приветствую,
пробую написать многопоточный парсер на python, на текущий момент если честно даже не уверен что выбранный мною модуль threading является именно тем что мне нужно на самом деле, буду благодарен за совет или помощь более опытных разработчиков.
Цель:
Запустить парсинг с заранее установленным количеством потоков, и поддерживать заданное количество потоков на всем протяжении выполнения скрипта. В качестве примера я планирую парсить данные с ресурса где id инкрементируется.
Сильно упрощенный пример:
import threading
import time
def hard_func(i):
print("very big code")
return 1
if __name__ == "__main__":
max_thread = 4
threads = list()
start_time = time.perf_counter()
for i in range(0, 100000):
print('Threads: ', str(threading.active_count()), ' i: ', str(i))
if threading.active_count() < max_thread:
print("Сreate and start thread %d.", i)
x = threading.Thread(target=hard_func, args=(i,))
threads.append(x)
x.start()
for index, thread in enumerate(threads):
thread.join()
end_time = time.perf_counter()
elapsed_time = end_time - start_time
print("Elapsed time: ", elapsed_time)
На данный момент скрипт выполняется быстрее с одним потоком чем с 2я и более.