В чистом Python (потоки сосуществуют, но не параллельны), можно дождаться завершения всех потоков, используя join
метод:
ts = [] # Threads
for i in range(10):
ts.append(Thread(func=...))
ts[-1].start()
for i in range(len(ts)):
ts[i].join() # Main thread waits for all these
В Cython потоки создаются с использованием prange
:
for i in prange(len(data), nogil=True, num_threads=10):
# Do something with data[i] in an uncertain thread id
pass
# Main thread back here
cython.parallel.join_all_prange_threads() # Need something like this
do_something_with_results_by_prange_threads()
Не Cython параллельный модуль имеет prange
, parallel
, threadid
но нет join
. Любой способ подождать, пока все потоки в prange будут выполнены сначала в основном потоке ? Поскольку код после зависит от результатов prange thread.