Почему потоки не работают параллельно python threading
У меня есть сложная задача с большим кол-вом вычислений. Я хочу её оптимизировать и распределить по потокам. Тестовая болванка:
import threading
test = 0
def my_func():
c = 43243423 ** 543536 # 'сложные вычисления...'
global test
test += c
print(f"{threading.current_thread().name} finished")
barrier.wait()
barrier = threading.Barrier(6)
for i in range(5):
threading.Thread(target=my_func).start()
print("created")
barrier.wait()
print(test)
На выходе я получаю :
Thread-1 finished
Thread-2 finished
Thread-3 finished
Thread-4 finished
createdThread-5 finished
По моей задумке все потоки должны выполнять вычисления параллельно, следовательно они должны завершится примерно в 1 момент, но этого не происходит. Как заставить их работать одновременно?
Ответы (1 шт):
Автор решения: Universall
→ Ссылка
Спасибо всем за советы. В данной ситуации правильно будет использовать multiprocessing
import multiprocessing
def my_func():
c = 43243423 ** 546234 # 'сложные вычисления...'
print(f"{multiprocessing.current_process().name} finished")
if __name__ == '__main__':
for i in range(5):
multiprocessing.Process(target=my_func).start()
Ссылочки: https://habr.com/ru/company/otus/blog/458694/ https://ru.stackoverflow.com/questions/1285122/Выполнение-процессов-и-потоков-и-роль-gil