导语:
本文主要介绍了关于Python如何清理驻留的字符串的相关知识,包括python空字符串,以及python字符串数组这些编程知识,希望对大家有参考作用。
1、说明
cleanup 函数遍历 interneddictionary 中的所有字符串,调整这些对象的引用计数,并将它们标记为 NOT_INTERNED,以便进行垃圾收集。当所有字符串都标记为 NOT_INTERNED 时,interned 字典将被清空并删除。
2、清理实例
这个清理函数就是_PyUnicode_ClearInterned,在 unicodeobject.c 中定义。
void
_PyUnicode_ClearInterned(PyThreadState *tstate)
{
.........
// Get all the keys to the interned dictionary
PyObject *keys = PyDict_Keys(interned);
.........
// Interned Unicode strings are not forcibly deallocated;
// rather, we give them their stolen references back
// and then clear and DECREF the interned dict.
for (Py_ssize_t i = 0; i < n; i++) {
PyObject *s = PyList_GET_ITEM(keys, i);
.........
switch (PyUnicode_CHECK_INTERNED(s)) {
case SSTATE_INTERNED_IMMORTAL:
Py_SET_REFCNT(s, Py_REFCNT(s) + 1);
break;
case SSTATE_INTERNED_MORTAL:
// Restore the two references (key and value) ignored
// by PyUnicode_InternInPlace().
Py_SET_REFCNT(s, Py_REFCNT(s) + 2);
break;
case SSTATE_NOT_INTERNED:
/* fall through */
default:
Py_UNREACHABLE();
}
// marking the string to be NOT_INTERNED
_PyUnicode_STATE(s).interned = SSTATE_NOT_INTERNED;
}
// decreasing the reference to the initialized and
// access keys object.
Py_DECREF(keys);
// clearing the dictionary
PyDict_Clear(interned);
// clearing the object interned
Py_CLEAR(interned);
}
以上就是Python清理驻留字符串的方法,希望能对大家有所帮
助。
更多Python学习指路:
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python concat函数的用途是什么?09/15
- ♥ Python交互式解释器及使用12/29
- ♥ 什么是python决策树算法11/22
- ♥ python K-NN算法优缺点12/06
- ♥ 如何在python中定义08/17
- ♥ 什么是python位操作09/20
内容反馈