вопрос по питону (новичок :) и поток)

marvinz

Гуру форума
Регистрация
7 Апр 2009
Сообщения
164
Реакции
85
Добрый день, пытаюсь решить одну свою задачу на питоне. Алгоритм следующий:

1) программа получает некие данные
2) начинается цикл
3) на определенном этапе она запускает поток и продолжает выполняться
4) на некоторой стадии она должна дождаться завершения этого потока
5) на начало цикла
6) выводит результат

какой правильный скелет подобного приложения? может кто написать?
 
каркас

Набросал каркас:
Код:
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
import threading
import time
class T(threading.Thread):
    def __init__(self, n):
        threading.Thread.__init__(self, name="thread" + str(n))
        self.n = n
    def run(self):
        time.sleep(5)
        print "Поток отработал свое", self.n
for i in xrange(3):
    print "Начинаем, цикл:", i
    time.sleep(1)
    print "Запускам поток"
    t = T(i)
    t.start()
    print "Продолжаем работать"
    time.sleep(2)
    print "Ждем поток"
    if t.isAlive(): 
        t.join()
    print "Дождались поток\n", "-"*20
Вывод в консоль:
Код:
Начинаем, цикл: 0
Запускам поток
Продолжаем работать
Ждем поток
Поток отработал свое 0
Дождались поток
--------------------
Начинаем, цикл: 1
Запускам поток
Продолжаем работать
Ждем поток
Поток отработал свое 1
Дождались поток
--------------------
Начинаем, цикл: 2
Запускам поток
Продолжаем работать
Ждем поток
Поток отработал свое 2
Дождались поток
--------------------
 
zardoz, а в чем смысл строчки:

PHP:
t.join()
?
 
Поток, который вызвал метод join(), приостанавливается и дожидается выполнения потока, которому этот метод принадлежит (поток t).

А isAlive() возвращает True, если поток еще работает.
 
Назад
Сверху