Задать вопрос
@hatepls
Начинающий питонист

Как подключить многопоточность(python)?

У меня есть список элементов,
как мне подключить многопоточность?
пример кода:
its = []
for elem in items:
    its.append(get_dict(elem))
  • Вопрос задан
  • 186 просмотров
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ответы на вопрос 2
@Dirlandets
Жахни мультипроцессингом по унынию.

Если пока сам не допираешь до таких задач, не рекомендую использовать asyncio, пока въедешь поседеешь.

Попробуй:
from multiprocessing import Pool

def get_dict(elem):
    #тут классная логика get_dict
    #можно даже сразу писать в csv

p = Pool(5) #Это "процессы" 10, 20, 1000000000000
p.map(get_dict, items) # map применит твою функцию get_dict к каждому элементу в списке items


По началу впечатляет, и выглядит понятно.

https://docs.python.org/2/library/multiprocessing.html
Ответ написан
Комментировать
достаточно просто :
import threading # библеотеки базовые - ничего устанавливать не надо
from queue import Queue # вариант получения значения №1

items = ["1", "2"] # пример списка
s = None # вариант получение значения №2
def function_for_new_thread(items, queue): # thread работает с функциями
    global s # пользуемся глобальностью что очевидней но не рекомендованно
    its = []
    for elem in items:
        its.append(elem)  # ваш код
    s = its # глобальная переменная получает нужное значение (№1)
    queue.put(its) # пишем в queue наш список (№2)
var_for_thread = Queue() # создание queue
new_thread = threading.Thread(target=function_for_new_thread, 
                              args=(items, var_for_thread,)) 
# target = функция, args=(нужные данные,) запятая в конце перечисления всех обязательна
new_thread.start() # на старт, внимание, марш
new_thread.join() # ждем поток
print(var_for_thread.get()) # наши данные через queue (№1)
print(s) # наши данные через global (№2)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы