Почему потоки не работают параллельно 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

→ Ссылка