回答編集履歴
1
d
answer
CHANGED
@@ -73,4 +73,23 @@
|
|
73
73
|
----
|
74
74
|
|
75
75
|
1つの Notebook でいろいろなコードを実行していると、使ってない変数でもカーネルをシャットダウンする前まではずっと残っているので、使い終わった Notebook はシャットダウンしましょう。
|
76
|
-
書いてる最中でも試行錯誤して未使用な変数がスタックしてきたら、手動で消すより、Notebook をリスタートしたほうがよいです。
|
76
|
+
書いてる最中でも試行錯誤して未使用な変数がスタックしてきたら、手動で消すより、Notebook をリスタートしたほうがよいです。
|
77
|
+
|
78
|
+
## 追記
|
79
|
+
|
80
|
+
> 100000という値と1という値が同一として表されているのはおかしい
|
81
|
+
|
82
|
+
Python の int 型は格納する値の大きさによって適切に拡張されるようになっているので、1 と 100000 はたまたま同じメモリ量で表されていたのだと思います。
|
83
|
+
C++ の std::vector のように最初は一定量のメモリを確保しておいて、足りなくなったら拡張するようになっているみたいです。
|
84
|
+
|
85
|
+
```
|
86
|
+
import sys
|
87
|
+
|
88
|
+
a = 10000
|
89
|
+
b = 10000000000000000
|
90
|
+
|
91
|
+
print(sys.getsizeof(a), sys.getsizeof(b)) # 28, 32
|
92
|
+
```
|
93
|
+
|
94
|
+
詳しい解説が以下にありました。
|
95
|
+
[Understanding memory allocation for large integers in Python - Stack Overflow](https://stackoverflow.com/questions/40344159/understanding-memory-allocation-for-large-integers-in-python)
|