Я сравнил различные методы, приведенные здесь, с циклом:
for i in range (1000000): # 700 msec
r=int(123456781234567**0.5+0.5)
if r**2==123456781234567:rr=r
else:rr=-1
, обнаружив, что этот самый быстрый и не нуждается в математическом импорте. Очень долго может закончиться неудачно, но посмотрите на это
15241576832799734552675677489**0.5 = 123456781234567.0