【问题标题】:How Long Can Python Run?Python 可以运行多长时间?
【发布时间】:2014-02-24 20:41:37
【问题描述】:

我有这样的代码:

While 1:
    A = input()
    print A

我可以期望它运行多长时间?多少次?

有没有一种方法可以在我打印完 A 中的所有内容后立即丢弃它?

python是如何处理的?一段时间后程序会崩溃吗?

谢谢。

【问题讨论】:

  • 这称为垃圾回收,由python解释器为你完成。
  • 不相关:您可以使用from IPython import embed; embed() 获取ipython shell(看起来您的循环试图模拟Python shell)。
  • @J.F.Sebastian 那是从哪里来的?!这只是一个打印输入的循环。
  • @poke: input(prompt) in Python 2 等价于eval(raw_input(prompt))(意思是你可以放任何 Python 表达式)
  • @J.F.Sebastian 不过,您仅限于表达,所以不一样。而且我个人总是假设人们在这里发布简化的示例,所以这可能不是 OP 所做的全部。在这种情况下,模拟解释器有点过度解释了 imo。

标签: python python-2.7 memory


【解决方案1】:

当您将A 重新分配给一个新值时,没有任何东西可以引用旧值。 Garbage collection在这里发挥作用,旧对象自动返回空闲内存。

因此,像这样的简单循环永远不会耗尽内存。

【讨论】:

【解决方案2】:

这实际上可以永远运行。当 A 的值被覆盖时,Python 垃圾收集器将释放 A 使用的内存。

旁注:“While”必须是小写的“while”,并且认为使用“while True:”而不是“while 1:”更符合 Pythonic 风格

【讨论】:

    【解决方案3】:

    您更改 A 的值,因此内存不会成为问题,因为 python 垃圾会收集旧值并返回内存......所以永远

    【讨论】:

    • 这在 python 中是错误的。 A = input() 重新分配一个引用,现在未引用的对象稍后会被垃圾回收。
    • 我同意,我已经添加进去了。
    • 但是“覆盖 A 的值”的表述仍然具有误导性。
    • 如果您将 A 的值视为对对象的引用,那么是的,该值正在被覆盖(分配了新的引用)。我认为你过于迂腐了。
    • Python 应该很简单,因此答案很简单
    猜你喜欢
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多