- Pythonのお勉強 Part50
888 :デフォルトの名無しさん[]:2015/08/10(月) 10:34:27.46 ID:AGT5HrH+ - はいよ。
>>> f = 1.0 >>> f.__sizeof__() 24 >>> f10000 = 10.0 ** 10000 Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Numerical result out of range') >>> from decimal import Decimal as D >>> df10000 = D("10.0") ** 10000 >>> df10000.__sizeof__() 104 >>> L = [None] * (2 ** 24) >>> L.__sizeof__() 134217768
|
- Pythonのお勉強 Part50
890 :デフォルトの名無しさん[]:2015/08/10(月) 11:30:47.99 ID:AGT5HrH+ - >>889
malloc() が失敗する時、浮動小数の小数点以下の最大桁数と、 listの要素の数は反比例の関係にあるでしょう? また、質問者はlistもmemoryを使う前提に気づいていないようでした。 浮動小数一つの要素のmemory sizeを知る方法、 decimal module 使ったobjectの要素のmemory sizeを知る方法、 list の要素数によってPCの使用するmemory sizeが大きく変動する事を 示すために、>>888を書きました。
|
- Pythonのお勉強 Part50
891 :デフォルトの名無しさん[]:2015/08/10(月) 14:39:29.91 ID:AGT5HrH+ - >>887
$ cat /proc/meminfo | grep Mem MemTotal: 3867772 kB MemFree: 2707672 kB の環境で、 http://pastebin.ca/3096710 を実行すると、bit=26を実行できました。 bit=27は×。 よって、 list_elements = 134217727 list_elements_size_of = 1207959624 が限界付近っぽいので、 max_mem_size=1207959624 として http://pastebin.ca/3096751 を実行して、 float_objects の最大数は、 37748737 と決定しました。 お試しあれ。
|