To może być głupie pytanie, ale mimo to zapytam. Mam obiekt generatora:Python generator objects: __sizeof __()
>>> def gen():
... for i in range(10):
... yield i
...
>>> obj=gen()
mogę zmierzyć jego wielkość:
>>> obj.__sizeof__()
24
Mówi się, że generatory uzyskać spożywane:
>>> for i in obj:
... print i
...
0
1
2
3
4
5
6
7
8
9
>>> obj.__sizeof__()
24
... ale obj.__sizeof__()
pozostaje taka sama.
ze strunami to działa jak się spodziewałem:
>>> 'longstring'.__sizeof__()
34
>>> 'str'.__sizeof__()
27
Byłbym wdzięczny jeśli ktoś mógłby mnie oświecić.
Możesz być także zainteresowany [ 'sys.getsizeof()'] (http://docs.python.org/library/sys.html#sys.getsizeof). Rozważa także koszty ogólne GC (jeśli to ma znaczenie dla ciebie) i jest trochę mniej hackish. – mhawke
@mhawke: faktycznie OP nie był nawet zainteresowany '__sizeof__'! :) –
@NedBatchelder: tak, masz rację! – mhawke