Форум сайта python.su
В общем, я в ООП не силен и к Питону v2.7 обращаюсь по мере необходимости, нужна Ваша помощь.
Обобщенно говоря, есть несколько многопоточных операций:
import threading
class MyThread(threading.Thread):
def run ( self ):
func_1()
class MyThread2(threading.Thread):
def run ( self ):
func_2()
class MyThread3(threading.Thread):
def run ( self ):
func_3()
class MyThread4(threading.Thread):
def run ( self ):
func_4()
class MyThread5(threading.Thread):
def run ( self ):
func_5()
MyThread().start()
MyThread2().start()
MyThread3().start()
MyThread4().start()
MyThread5().start()
Многопоточность работает, но не так как нужно. Нужно чтобы MyThread5().start() выполнялся только по завершения всех остальных потоков. Запускал задержку time.sleep(5), это в некотором случае помогает, но все равно, если задачи остальных потоков будут болшими, он их опередит.
Как можно реализовать на моем примере, выпонение MyThread5().start() самым последним. Только прошу показать на моем примере. Спасибо.
Отредактировано nauman (Апрель 7, 2012 14:29:28)
Офлайн
naumanДля этого нужно дождаться завершения остальных потоков с помощью метода join:
Нужно чтобы MyThread5().start() выполнялся только по завершения всех остальных потоков
... threads = [MyThread(), MyThread2(), MyThread3(), MyThread4()] final_thread = MyThread5() for thread in threads: thread.start() for thread in threads: thread.join() final_thread.start() final_thread.join()
Офлайн
reclosedevСпасибо, сработало.
Для этого нужно дождаться завершения остальных потоков с помощью метода join:
Офлайн