2017-02-25 17 views
0

PyDict_ClearFreeListと呼ばれるPython辞書用のC API関数があります。しかし、ドキュメンテーション文字列はかなり希薄である:フリーリスト(PyDict_ClearFreeListが参照するもの)とは何ですか?

int PyDict_ClearFreeList()

クリアフリーリスト。解放されたアイテムの合計数を返します。

バージョン3.3の新機能。

この関数にはパラメータがないため、特定の辞書とは関係ありません(おそらく)。

そしてintを返します。これは、Pythonの "クラス"が常にPy_ssize_tのサイズを持っているため、Cの状態を参照していることを示しているので、むしろ奇妙なようです。

この「フリーリスト」はなんですか?

+1

あなたはdictobject.cソースに漠然と慣れていますか? https://github.com/python/cpython/blob/master/Objects/dictobject.cあなたがCの専門家でない場合は心配しないでください。あなたは、ディクテーションがコメントからちょうどどのように機能するかについてかなり多くを学ぶことができます。 –

答えて

2

フリーリストは特定の辞書とはまったく関係がありません。実際、多くのデータタイプ(例:PyFloat_ClearFreeList)に適用されます。

フリーリストは、物を置くことができる空き領域、つまりもはや使用していないが、グローバルなPythonメモリプールまたはシステムにリリースしていないオブジェクトを含むメモリのリストを保持する場所です。

this useful Theano tutorial 当たり

:スピードアップメモリ​​割り当て(再利用)に

Pythonは小さなオブジェクトの リストの数を使用します。各リストには、類似のオブジェクトが含まれます。 サイズのオブジェクトは1〜8バイトのリスト、9つの 〜16のリストなどがあります。小さなオブジェクトを作成する必要がある場合は、フリーブロック を再利用するかリスト、または新しいものを割り当てます。

関連する問題