phd_ru: (Python)
[personal profile] phd_ru
Пишу и запускаю код. И вдруг он спотыкается на ровном месте и зависает. Я было подумал, что создал где-то бесконечный цикл. Запускаю программу в отладчике, начинаю проходить. Повезло — программа зависла недалеко от начала. Зависла на очень странном месте, на вызове int(). Я как раз переделывал это место. Начинаю разбираться. Раньше там был код int(data) * 10**6, но мне понадобилось сохранить больше значащих цифр в случае, когда data — вещественное значение. Новый код: int(data * 10**6), и вот он зависает. Смотрю внимательно, и понимаю, что data может быть целым, может вещественным, а может СТРОКОВЫМ (из цифр)! int(data) во всех трёх случаях срабатывал нормально, а вот int(), применённый к строке из десяти миллионов символов, задумался. Исправил код на int(float(data) * 10**6).

Числа для сравнения:
$ time python -c "int('1234567890' * 10**3)"
0.00user 0.00system 0:00.01elapsed 78%CPU (0avgtext+0avgdata 3548maxresident)k
$ time python -c "int('1234567890' * 10**4)"
0.31user 0.00system 0:00.32elapsed 99%CPU (0avgtext+0avgdata 3660maxresident)k
$ time python -c "int('1234567890' * 10**5)"
31.19user 0.00system 0:31.25elapsed 99%CPU (0avgtext+0avgdata 4800maxresident)k
$ time python -c "int('1234567890' * 10**6)"
3154.70user 0.49system 52:41.28elapsed 99%CPU (0avgtext+0avgdata 17452maxresident)k

February 2026

S M T W T F S
123456 7
89 10 11121314
15161718192021
2223 2425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 24th, 2026 04:16 pm
Powered by Dreamwidth Studios