Ваша реализация Python (вероятно, CPython) должна иметь Глобальную блокировку интерпретатора (GIL)
pow
- это встроенная функция Python, которая не вызывает GIL при вызове,эффективная блокировка всех выполнений, пока он запущен и работает довольно долго.
Если вы хотите неблокировать, вместо этого используйте ProcessPoolExecutor
.Отдельный процесс означает 2 отдельных GIL и не блокирование.У него точно такой же интерфейс.Он также имеет больше ограничений, так как требует, чтобы параметры были picklable (нет удобной разделяемой памяти, как с потоками)
Обратите внимание, что это вычисление, вероятно, никогда не заканчивается или заканчивается "ошибкой нехватки памяти": поскольку это сила между целыми числами с большим значением мощности, поэтому он не переполняется, как это делает поплавки, а вычисляет и вычисляет, создавая все большие и большие целые числа каждый раз
Расчетное количество цифрдля этого числа примерно:
>>> math.log10(363)*100000000000000
255990662503611.25
10 ^ 14 цифр, что больше, чем любой текущий компьютер может обрабатывать память, а также процессор.