【问题标题】:Pointers vs garbage collection in PythonPython中的指针与垃圾收集
【发布时间】:2016-09-14 13:25:48
【问题描述】:

我理解在 Python 中为对象分配名称会创建对该对象的引用,并且当对象的引用计数变为零时,它会被垃圾收集。我想了解我是否应该在我的代码中使用指针,或者是否允许定期垃圾收集更好。

import time

while True:
    foo = time.clock() #every iteration get the clock time

在我上面的代码中,循环的每次迭代都分配变量名称“foo”来引用从 time.clock() 返回的新浮点对象。因为我知道“foo”总是会引用从 time.clock() 返回的浮点对象,所以使用指针是否更有效? (例如来自 ctypes 模块)?如果这是 C,我会使用指针,但在 Python 中我不确定它是否重要。

【问题讨论】:

  • 呃,没有。 ctypes 模块用于与 C 接口,你永远不会在纯 Python 代码中使用它。您应该从没有内置指针类型这一事实中得到提示。
  • ctypes 用于将 Python 与其他语言(尤其是 C)交互时使用。原生 Python 没有,也不需要指针。
  • 另外,不清楚您认为“指向浮点对象的指针”与为该对象分配名称有何不同。
  • 您还应该记住,Python 是用 C 以外的语言实现的,例如 C#(Iron Python)、Java (Jython) 和 Python (PyPy),因此即使实现,指针也是外来的。
  • @DanielRoseman 我对对象和名称/指针彼此分开的理解错了吗?它们在内存中不占用不同的地址吗?

标签: python pointers garbage-collection ctypes


【解决方案1】:

在纯 Python 中没有指针的概念。您指的是ctypes 模块,它旨在与以C 兼容语言(实际存在指针)实际编写和编译的代码进行交互。

所以你的问题是无效的。

【讨论】:

    猜你喜欢
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 2019-01-28
    相关资源
    最近更新 更多