2016-06-16 2 views
0

itertools.product에 고정 된 개체 위에 루프를 중첩 재사용되는 하나의 제품? itertools.product의 결과는 변경할 수 없습니다. 그것은 일종의 발전기입니다 (즉 구현시 yield을 사용합니다).최적화는 내가 지금과 같은 고정 된 물체가 한

이 루프는 내 프로그램의 성능 병목 현상이므로이 프로그램을 최적화하려고합니다.

+0

루프를 줄이는 방법이 있습니까? 어쩌면 제품 대신 조합을 통해? – Alissa

답변

0

는 모든 항목을 평가하는 발전기 개체 힘에 list를 호출 :

products = list(itertools.product(TAG_SET, repeat=2)) 

for x in very_outer_object: 
    # ... 
    for t1, t2 in products: 
    # ... 

products는 이제 내부 루프에서 재사용 할 수 있습니다.

제공된 len(TAG_SET)은 극도로 크지 않아 메모리 문제가 없어야합니다.