@Msondre

Как выполнить код после завершения потоков?

Как выполнить код, который идет после t.start()? Сейчас выводится время, потом то, что выполнилось в потоках
start = time.time()

def worker(num):
    ...

threads = []
for i in range(3):
    t = threading.Thread(target=worker, args=(i,))
    threads.append(t)
    t.start()

end = time.time()
print(end - start)
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
t.join() дождётся завершения для одного потока t. Если нужно дождаться завершения всех трёх потоков, то можно сделать join() в цикле.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dima20155
you don't choose c++. It chooses you
Он и так выполняется. Вы же не писали t.join()
Можно протестировать с задержкой:
import time
from threading import Thread

def foo(i):
    time.sleep(1)
    print(i)

for i in range(10):
    t = Thread(target=foo, args=[1])
    t.start()
    print('hi' + str(i))


Только учтите, что в python есть GIL, а значит многопоточный код в python и C++ будет выполнять совершенно по-разному.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект