그냥 파이썬 생성기를보고, 진짜로 감명 받았지만 사용하지 않는 것이 있습니까? 나는 파일에서 읽는 곳이나 사용자 행동이 영역이되는 과거의 C 코드를 생각하고있었습니다. 예를 들어, 사용자가 입력 (기본 데이터 입력?) 및 입력하는 호출 기능 프로세스를 묻는 데 생성기를 사용할 수 있습니까? 거기에 성능이나 정리 문제가 있습니까?파이썬 생성기 - 그것을 사용하지 않으려 고합니다
9
A
답변
12
하나의 문제는 그들이 얻을 것입니다 :
>>> def generatorForEvenKeys(aDictionary):
for k in aDictionary:
if k % 2 == 0: yield aDictionary[k]
>>> x = generatorForEvenKeys(someDictionary)
>>> pickle.dump(x,file('temp.dat','wb'))
는 당신에게 다음과 같은 오류를 가져옵니다 "소비." 즉, 시퀀스를 다시 반복해야하는 경우 생성기를 다시 만들어야합니다.
게으른 평가가 문제인 경우 발전기식이 필요하지 않을 수 있습니다. 예를 들어 모든 계산을 앞에서 수행하려는 경우 (예 : 리소스를 해제 할 수 있도록) 목록 이해 또는 for 루프가 가장 좋습니다.
psyco을 사용하면 생성자가 아닌 목록 표현식과 루프에서 속도가 상당히 빨라집니다.
또한 오히려 분명히 시퀀스 길이를 앞당겨 야 할 필요가 있다면 생성기를 원하지 않을 것입니다. 당신이 (xrange
파이썬 2.x에서의 range
낮은 것보다 훨씬 더 긴 시퀀스를 지원하는 이유는) 당신이 필요로 할 때 뭔가 메모리에 전체 목록을 유지하지 않고, iterateable 수
을하고자 할 때
13
발전기가 잘 유지되지 않습니다.
일반적으로 생성기 개체를 유지하려고하는 중 오류가 발생합니다. 발전기
TypeError: can't pickle generator objects
1
당신은 발전기를 사용 전체 "물건 목록"을 메모리에로드하려면 생성기 사용에 별다른 의미가 없습니다. 목록을 반환 할 수도 있습니다. A (약간 인위적인) 예를 들어
: 단지 효율적으로
def my_pointless_generator(x):
thedata = range(x) # or thedata = list(range(x)) in Python 3.x
for x in thedata:
yield x
를 다시 쓸 수 ..can ..
def my_pointless_generator(x):
return range(x)
관련 문제
- 1. eval 및 함수 생성자를 사용하지 않으려 고합니다.
- 2. Facebook 계정이있는 경우 인증 - FB 로그인을 사용하지 않으려 고합니다.
- 3. 명령을 사용하지 않으려 고 시도
- 4. 탭 활동을 재실행하고 있지만 탭 스위치를 다시로드하지 않으려 고합니다.
- 5. 데이터베이스에 연락처를 삽입했지만 기존 연락처를 복제하지 않으려 고합니다.
- 6. dojo 끌어서 놓기 : 새 노드를 추가하지 않으려 고합니다.
- 7. 저장소에 fleximage gem과 s3을 사용하고 싶지만 dev/qa/test envs에서 s3을 사용하지 않으려 고합니다.
- 8. 여러 부모 테이블을 사용하지 않으려 고 시도
- 9. 파이썬 생성기 중복
- 10. 파이썬 구성 파일 생성기
- 11. 파이썬 HTML 생성기
- 12. 파이썬 순열 생성기 퍼즐
- 13. 파이썬 비동기 콜백 및 생성기
- 14. 파이썬 위키 스타일 닥터 생성기
- 15. PHP : (img 태그에서) 스트림에서 이미지를 가져 오지만 거기에 없으면 img 태그를 쓰지 않으려 고합니다. 방법?
- 16. 파이썬 검색 : 그것을 어떻게 효율적으로
- 17. 파이썬 생성기 객체를 복제하는 방법은 무엇입니까?
- 18. 파이썬/C 클래스에 생성기 기능 추가
- 19. while 루프를 생성기 함수로 변환하는 파이썬
- 20. 파이썬 코드에서 생성기 기능은 어디에 사용합니까?
- 21. 파이썬 ftplib - 어떤 방법으로 그것을 닥쳐?
- 22. nhibernate 프록시 생성기
- 23. 그것을
- 24. 그것을
- 25. 싱글 톤 파이썬 생성기? 아니면 비단뱀 생성기를 피클하나요?
- 26. 파이썬 생성기 객체는 트래버스 된 후에 "사용할 수 없게"됩니까?
- 27. <spring:bind>은 무엇입니까? 언제 그것을 사용하고 그것을 사용하지 않을까요?
- 28. master 브랜치를 상태 8로 되돌리려 고합니다.
- 29. 나침반에 폴더보기를 멈추라 고합니다 - 초보자 용
- 30. WPF 응용 프로그램에서 '제빙'할 때 제스처 툴팁을 사용하지 않으려 고 시도합니다.
+1 좋은 – ebo
을 알고 당신은 예를 들어 줄 수 있습니까? – bayer
bayer : 다음과 같은 예 : 텍스트 문서를 반복하고 단어를 반환합니다. 필자는 생성기를 피클 링하여 텍스트 문서를 계속 읽을 수 있도록하고 싶습니다. 죄송합니다. 캔트. 이 얼마나 피타. –