私の理解では、os.urandom(サイズが)その後、与えられた「サイズ」のバイトのランダムな文字列を出力しますが、ということです。このバイト文字列は実際にどのくらいのメモリを占有しますか?
import os
import sys
print(sys.getsizeof(os.urandom(42)))
>>>
75
なぜこれが42ではないでしょうか?
および関連質問:
import base64
import binascii
print(sys.getsizeof(base64.b64encode(os.urandom(42))))
print(sys.getsizeof(binascii.hexlify(os.urandom(42))))
>>>
89
117
なぜこれらはとても異なっていますか?どのエンコーディングが、os.urandomによって与えられたようなバイト列を格納する最もメモリ効率的な方法でしょうか?
編集:この質問はWhat is the difference between len() and sys.getsizeof() methods in python?の重複であると言うのはかなりのようです。私の質問はlen()とgetsizeof()の違いではありません。私は、Pythonオブジェクトが一般的に使用するメモリについて混乱していました。この問題に対する答えが私にはっきりと分かりました。
2番目の例では、結果の文字列の長さが異なるため(base64と16進数)、等しくありません。 'getsizeof()'の結果を取り、各オブジェクトの 'len()'を減算することで、各オブジェクトがどれくらいのメモリを使用しているか把握することができます。 –