Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 2, 2013 08:51:56

Zverushko
Зарегистрирован: 2013-04-22
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

потоки

Доброго дня!

имею функцию, которая что-то делает.
имею список элементов, с которыми нужно что-то сделать
создаю пустой список для результатов
пишу класс для потока, где есть функция run, которая добавляет результат в список результатов
циклом создаю столько потоков, сколько элементов в списке элементов

пытаюсь вывести список результатов на экран, но он выводится раньше, чем закончились потоки, и следовательно пустой, если напишу time.sleep(10), то выводит нормально.

лок не использую в принципе.

как лучше написать код что-бы передавал переменную с результатами только после завершения всех потоков?

Офлайн

#2 Ноя. 2, 2013 09:03:44

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

потоки

“Other threads can call a thread’s join()”



Офлайн

#3 Ноя. 2, 2013 09:18:43

Zverushko
Зарегистрирован: 2013-04-22
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

потоки

интересно что c

for element in a:
    t=MyThread(element)
    t.start()
    t.join()

код выполняется заметно дольше, чем
while threading.active_count()>1:
    time.sleep(1)

Офлайн

#4 Ноя. 2, 2013 11:48:26

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

потоки

Zverushko
код выполняется заметно дольше, чем
все join нужно вызвать после того как стартанете все потоки

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version