Python中非常长的循环似乎超时了

Python中非常长的循环似乎超时了,python,python-2.7,ipython,Python,Python 2.7,Ipython,我遇到了一个奇怪的问题,在Python中运行非常长的循环/计算时,循环似乎终止了,但没有计算结果。此外,解释器似乎崩溃,不支持进一步的计算 环境:带有IPython解释器的Python2.7(Enthound Canopy) 例如,考虑哑函数: >>> def myfunc(n): t = 0; for i in xrange(n): t += i return t >>> myfunc(1000

我遇到了一个奇怪的问题,在Python中运行非常长的循环/计算时,循环似乎终止了,但没有计算结果。此外,解释器似乎崩溃,不支持进一步的计算

环境:带有IPython解释器的Python2.7(Enthound Canopy)

例如,考虑哑函数:

>>> def myfunc(n):
       t = 0;
       for i in xrange(n):
           t += i
       return t
>>> myfunc(100000000)
Out[7]: 4999999950000000L
>>> myfunc(10e10L)   
##---- runs for a minute with no response / return-value and then the prompt shows.----
>>>
>>> myfunc(100)
---- no response --- 
>>> print 'hello'
---- no response --- 
>>> 

虽然我预计大循环会溢出,可能会抛出错误,但我不确定为什么函数调用返回时没有任何结果。这是预期的行为吗

你是说myfunc(100)什么也不返回?你是说你没有看到结果,但是你已经发布了[7]:499999950000000L所以你有了结果。有点不清楚你到底在问什么。即使论点中多了一个零,也无法再现这个问题。它花费的时间和预期的一样长,并返回预期的结果。可能是因为您正在使用
范围
而导致一些内存问题吗?@PadraicCunningham显然,第二次调用没有结果。第三个,只有100个,也不一样。@glglglgl,我不认为这个问题有任何明显的地方“而且,解释器实际上停止了工作——也就是说,它不做任何其他计算”,当它已经在运行一个函数时,解释器将如何做其他事情?