@Akshin17
Пайтон програмист

Распределение задач потокам Python?

Всем привет!
У меня следующая задача:
я подключаю 100 потоков и кидаю общий файл со строками.
мне нужно сделать так что бы потоки не повторяли друг друга и доводили дело до конца,
мое решение:
from threading import Thread as th


def bot():
    global baza

    for i in baza:


        bi = i
        baza.remove(i)

        
        





baza = open('baza.txt','r').read().split()
for i in range(30):
    th(target=bot).start()

при этом коде каждый поток удаляет свое значение из массива , из за этого другие потоки не могут взять его.
Как можно по другому сделать это?
проблема в том что когда я делаю так, то при какой то проблеме я не могу заного начать задачу с этимже значением так как она удалилась
  • Вопрос задан
  • 293 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Всё уже придумали за вас. В стандартной библиотеке есть thread pool, которому можно передать функцию, массив данных и размер куска обрабатываемого одним потоком, а дальше он сам создаст потоки и раздаст им данные.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Используйте Queue вместо массива https://docs.python.org/3/library/queue.html
Тогда потоки смогут гарантировано забирать ещё необработанные задания
Ответ написан
Ваш ответ на вопрос

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

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