我有一个需要大量计算的复杂任务。我想优化它并在线程之间分配它。测试空白:
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 时刻完成,但这不会发生。如何让它们同时工作?
感谢大家的建议。在这种情况下,使用多处理是正确的
链接: https ://habr.com/en/company/otus/blog/458694/ https://ru.stackoverflow.com/questions/1285122/Execution-of-processes-and-threads-and-gil-role