G
G
George2019-06-04 18:06:42
Python
George, 2019-06-04 18:06:42

How to enable multithreading (python)?

I have a list of elements,
how do I enable multithreading?
code example:

its = []
for elem in items:
    its.append(get_dict(elem))

Answer the question

In order to leave comments, you need to log in

2 answer(s)
D
Dirlandets, 2019-06-05
@Dirlandets

Get bored with multiprocessing out of desperation.
If you don’t reach such tasks yourself yet, I don’t recommend using asyncio until you turn gray.
Try:

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

Impressive at first and looks understandable.
https://docs.python.org/2/library/multiprocessing.html

A
Artem Imaev, 2021-09-01
@AIRC24

simple enough:

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)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question