Python字串駐留的原理探究
1、說明
在CPython中,字串引用由一個名為interned的Python字典儲存、訪問和管理。當第一次呼叫常駐字串時,字典被延遲初始化,並儲存對所有常駐字串物件的引用。
2、原理例項
負責常駐字串的核心函式是PyUnicode_InternInPlace,它是在unicodeobject.c中定義的,呼叫時會建立一個interned的字典來容納所有常駐字串,然後在引數中註冊物件,使它們的鍵和值使用相同的物件引用。
以下函式片段顯示了 Python 實現字串駐留的過程。
void PyUnicode_InternInPlace(PyObject **p) { PyObject *s = *p; ......... // Lazily build the dictionary to hold interned Strings if (interned == NULL) { interned = PyDict_New(); if (interned == NULL) { PyErr_Clear(); return; } } PyObject *t; // Make an entry to the interned dictionary for the // given object t = PyDict_SetDefault(interned, s, s); ......... // The two references in interned dict (key and value) are // not counted by refcnt. // unicode_dealloc() and _PyUnicode_ClearInterned() take // care of this. Py_SET_REFCNT(s, Py_REFCNT(s) - 2); // Set the state of the string to be INTERNED _PyUnicode_STATE(s).interned = SSTATE_INTERNED_MORTAL; }
以上就是Python字串駐留的原理探究,希望能對大家有所幫助。更多Python學習指路:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3402/viewspace-2830584/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python生成器的原理探究Python
- SQL Server表駐留記憶體和檢測SQLServer記憶體
- RAC原理探究
- 探究Spring原理Spring
- exchange partition原理探究
- String字串效能優化的探究字串優化
- 用匯編編寫DOS下的記憶體駐留程式(5) (轉)記憶體
- 用匯編編寫DOS下的記憶體駐留程式(3) (轉)記憶體
- 用匯編編寫DOS下的記憶體駐留程式(4) (轉)記憶體
- Billy Belceb病毒編寫教程(DOS篇)---駐留記憶體病毒記憶體
- dotnet 探究 SemanticKernel 的 planner 的原理
- RunLoop底層原理探究OOP
- zookeeper使用和原理探究
- 【瀏覽器】渲染原理探究瀏覽器
- Promise原理探究及實現Promise
- 底層原理探究(二)RunLoopOOP
- iOS底層原理探究-RunloopiOSOOP
- iOS底層原理 - 常駐執行緒iOS執行緒
- 資料塊駐留管理池(Database Resident Connection Pooling)(1)DatabaseIDE
- 資料塊駐留管理池(Database Resident Connection Pooling)(2)DatabaseIDE
- 資料塊駐留管理池(Database Resident Connection Pooling)(3)DatabaseIDE
- [譯]瀏覽器工作原理探究瀏覽器
- iOS底層原理探究-RuntimeiOS
- ReentrantLock實現原理深入探究ReentrantLock
- 從零實現DNN 探究梯度下降的原理DNN梯度
- MG--探究KVO的底層實現原理
- UITableView的原理——探究及重新實現程式碼UIView
- 資料庫駐留連線池(Database Resident Connection Pooling)(4)資料庫DatabaseIDE
- 深入探究Python中的字典容器Python
- 探究Hybrid-APP技術原理APP
- iOS底層原理 - Block本質探究iOSBloC
- Java8 HashMap實現原理探究JavaHashMap
- python中切片的淺複製探究Python
- 重構遺留程式碼(2):魔術字串和常量字串
- .NET Remoting 體系結構 之 在 ASP.NET 中駐留遠端伺服器REMASP.NET伺服器
- Python中的字串Python字串
- Jackson原理探究—Mixins其一
- Python中的字串與字串格式化Python字串格式化