Реализация групп потоков

Есть 5 групп потоков по несколько потоков в группе. Я пытаюсь добиться того, чтобы эти группы работали в цикле.То есть, 1 группа заканчивает работу, потоки убиваются и запускается следующая группа, потом следующая и т.д. и эти группы идут друг за другом.

import threading

from main import main
from settings import number_of_threads

def multithread(somedata):
    lock = threading.RLock()

    for _ in range(number_of_threads):
        t = threading.Thread(target=main, args=(lock, somedata))
        t.start()


if __name__ == '__main__':

   
    while True:
        for group in range(1,6)):
            multithread(somedata)

Я пытаюсь сделать это таким образом, но это работает не так как требуется. Группы не ждут завершения всех предыдущих потоков группы. Как можно реализовать данную идею?


Ответы (1 шт):

Автор решения: Pigeoncatcher

Попробуйте сделать так

import threading

from main import main
from settings import number_of_threads

def multithread(somedata):
    lock = threading.RLock()
    threading_list = []

    for _ in range(number_of_threads):
        t = threading.Thread(target=main, args=(lock, somedata))
        t.start()
        threading_list.append(t)

    for t in threading_list():
        t.join()


if __name__ == '__main__':

   
    while True:
        for group in range(1,6):
            multithread(somedata)
→ Ссылка