@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)
  • Вопрос задан
  • 99 просмотров
Решения вопроса 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++ будет выполнять совершенно по-разному.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
22 мая 2024, в 21:04
2000 руб./за проект
22 мая 2024, в 20:47
50000 руб./за проект
22 мая 2024, в 20:14
3600 руб./за проект