Найти - Пользователи
Полная версия: Очередь выполния многопоточных операций
Начало » Python для новичков » Очередь выполния многопоточных операций
1
nauman
В общем, я в ООП не силен и к Питону 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() самым последним. Только прошу показать на моем примере. Спасибо.
reclosedev
nauman
Нужно чтобы MyThread5().start() выполнялся только по завершения всех остальных потоков
Для этого нужно дождаться завершения остальных потоков с помощью метода join:
...
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()
nauman
reclosedev
Для этого нужно дождаться завершения остальных потоков с помощью метода join:
Спасибо, сработало.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB