저는 때때로 방해하는 python 2.7 응용 프로그램이 있습니다.루프 내에서 루프를 다시 시작하는 파이썬 방법은 무엇입니까
매우 큰 데이터 파일을 처리하고 있습니다. 메모리 제약 조건을 처리하기 위해 x 및 y 구성 요소로 식별되는 표로 데이터 파일을 나눕니다. 각 그리드는 독립적으로 처리됩니다.
가끔씩 처리하는 데 시간이 오래 걸리기 때문에 특정 시점에서 처리를 중지해야합니다. 이상적으로는 y_start 및 x_start를 업데이트하고 중단 한 위치에서 응용 프로그램을 다시 시작하고 싶습니다 (이미 처리 된 표를 처리하지 않고).
주요 동작 내에 발생위한 루프 중첩 :
x_start=0.0
x_step=0.05
x_size=10.0
y_start=0.0
y_step=0.05
y_size=10.0
x_ranges = zip(np.arange(x_start,x_size,x_step), np.arange(x_step+x_start,x_size+x_step,x_step))
y_ranges = zip(np.arange(0.0,y_size,y_step), np.arange(y_step,y_size+y_step,y_step))
for x_min,x_max in x_ranges:
for y_min,y_max in y_ranges:
doAction()
위 코드에서, I는 x_start 취급있다. y_start는 x_min = x_start 일 때만 사용해야합니다. 다른 모든 x 값은 0.0부터 시작해야합니다.
다음은 내가 제안한 해결책입니다. 더 나은, 더 파이썬 방법이 :
y_ranges_resume = zip(np.arange(y_start,y_size,y_step),np.arange(y_start+y_step,y_size+y_step,y_step)
for x_min,x_max in x_ranges:
if x_min == x_start:
for y_min,y_max in y_ranges_resume:
doAction()
else:
for y_min,y_max in y_ranges:
doAction()
나는 당신이 달성하고 싶은 것을 설명해야한다고 생각한다. 나는 for 루프로 할 수있는 일이 더 많다고 생각한다. :) –
좋은 지적. 세부 사항을 추가하겠습니다. –
DRY (반복하지 말 것)에 대해 for 표현식에서 삼항 연산자를 사용할 수 있습니다 (예 :'for y_min, y_max in y_ranges_resume if x_min == x_start else y_ranges : ' – AChampion