У меня возник вот такой вопрос: занимаюсь написанием программы, которая делает некоторые файловые операции на компьютере с помощью
тредов.
Обобщённый код описанной ситуации:
...
q = Queue() # создание очереди как объекта, к которому можно обращаться в Питоне
'''
здесь некоторый код, который строит очередь, например,
мы распарсили файловые имена папок с помощью re и os в список list,
а дальше queue строится добавлением элементов списка через цикл
'''
for item in list:
q.put(item)
'''
создание очереди закончено, хотим теперь в несколько потоков (например, 10) обработать очередь c помощью "Работников"
'''
def worker(q):
while True:
a = q.get()
print a
q.task_done()
for i in xrange(10):
t = Thread(target=worker, args=(q,))
t.daemon = True
t.start()
'''
ждем, пока очередь не опустеет
'''
q.join()
получается так, что queue строится последовательно через цикл, через q.put(item)
если item'ов больше пяти тысяч, то это уже будет “бутылочным горлышком” в программе - очередь будет создаваться долго по времени.
В связи с этим, вопрос к экспертам - как можно построение queue сделать более быстро?
Спасибо за внимание заранее.