스크립트에서 같은 작업을 많은 데이터에 반복할 때, 한 번 도는데 엄청나게 오래 걸리거나
다른 사이트 리소스를 쓰기 때문에 괜히 민폐를 안 끼치려고 앞 부분만 테스트하는 게 좋을 때가 많습니다.
한 번만 돌릴 때는 이렇게 보통..
for url in 엄청많은URL: f = urllib.urlopen(url) # 한 번에 확! 하기는 좀 귀찮은 작업을 한다 raise SystemExit # 여기서 그냥 1번만 돌고 종료
종종 첫 데이터는 엄청 단순해서 한 5개나 앞쪽 10개만 돌려보고 싶을 때, [:5]나 [:10]하면 좋겠죠.
그런데, 어떤 건 이터레이션은 되지만 이터레이션 자체가 자원을 많이 먹거나 민폐를 끼치거나
하는 경우가 있습니다. 그 때 뭐 제한하려면 enumerate같은 걸 써서 i >5 면 중단 이러면 되겠지만
역시 너무 순수해 보여서 지루하고 타이핑도 많아서 귀찮습니다. 그래서 제가 보통 쓰는 방법
cd = list('12345') for url in 엄청많은URL: # 다른 작업 cd.pop()
왠지 12345 일일이 써 주면 아! 다섯번 하는구나! 하는 필이 확 오고, 에러로 끝내주니까 아주 신납니다. 🙂
혹시 직접 쓰시는 재미있는 방법이 있으면 소개해 주세요~
예전에 list(‘12345’) 비슷한 방법을 썼었는데, 하루는 20번 루프를 돌리려다가 완전 물먹었던 적이 있습니다. 3시간 정도 머리를 쥐어뜯다가 발견한 버그는: list(‘123456789123456789’) orz…
블루님: 커헉. 그런.. 저도 수시로 … ^^;;
세시간!!!
pop을 다른 작업 앞에서 해야 되지 않나요? 아니면 6번 수행 될것같은데;; ㅎ
오오. 그것도 그렇네요. 역시 꿀잠님 예리하신!
for url in __import__(‘itertools’).islice(엄청많은URL, 5):
# 다른 작업
실제로는 ^C^C^C 🙂
사실 input()해서 계속 하고 싶으면 0 아니면 그냥 엔터 치는 것도.. ㅎㅎ;
파이썬 초보라서 range가 먼저 생각이 나는데..
for i in range(5):
for url in urls:
do_something(url)
루비라면,
5.times do
urls.each { |url| do_something(url) }
end
for는 인덴트를 왔다갔다 해야해서 손이 좀 갈 것 같아용.. ^.^
shift를 포함해서 타이핑을 최소화 하는 게 전략!