Мой вопрос очень прост. У меня есть питон простой код, как это:Как ускорить прогресс цикла в Python?
for i in range(1,1193616,1) :
print i
Таким образом, все числа в диапазоне от 1 до 1193616 будет распечатана и этот цикл прогресс занимает очень много времени .. Как сделать это быстро?
EDIT:
на самом деле, я пытаюсь сделать программу A-звезда Pathfinding для данных изображения (растр) .. Это мой A-звезда функция сценария до сих пор:
def A_star(h,c,dx,dy,u,s_id,e_id,Op,Cl,Prt,CC,o,ht,w):
Op.append(s_id)
while e_id not in Op :
if Op == [ ] :
break
candidate = { }
for i in Op :
d = {i : CC[i]}
candidate.update(d)
o = min(candidate, key=candidate.get)
Cl.append(o)
Op.remove(o)
adjacent_list = adjacent_cell(o,dx,dy)
for p in adjacent_list :
if p in Cl:
adjacent_list = filter(lambda i: i != p, adjacent_list)
elif p not in Op :
Op.append(p)
d = {p : o }
Prt.update(d)
d = {p : F(p,o,h,u,w,c,dx,e_id,ht,CC)}
CC.update(d)
elif id in Op :
f1 = F(p,o,h,u,w,c,dx,e_id,ht,CC)
f2 = F(p,Prt[p],h,u,w,c,dx,e_id,ht,CC)
if f1 < f2 :
d = {p : o }
Prt.update(d)
d = {id : F(p,o,h,u,w,c,dx,e_id,ht,CC)}
CC.update(d)
return Prt
предполагается что s_id = 1 (старт) и e_id = 1193616 (конец), длительный цикл завершен в строке 3 while e_id not in Op :
Есть ли способ ускорить или оптимизировать мой код?
Я уверен, что печать - это бутылочная шея. Попробуйте только поставить 'pass' в качестве тела цикла и распечатать, как только цикл закончен. Должно быть намного быстрее. –
Возможный дубликат [Почему печать на stdout так медленно? Можно ли его ускорить?] (Http://stackoverflow.com/questions/3857052/why-is-printing-to-stdout-so-slow-can-it-be-sped-up) – Stiffo
Это не цикл, он пишет небуферизованный текст на консоль. – Stiffo