我不主張,這將永遠是一個好主意,但我發現,您可以通過在一個足夠大的輸入字符串運行eval
崩潰的Python(2.7和3.2選中):爲什麼python的eval有長度限制?
def kill_python(N):
S = '+'.join((str(n) for n in xrange(N)))
return eval(S)
在我的電腦S
可以很好地生成,但對於大約N>74900
的值,Python將會以Segmentation fault (core dumped)
失敗。解釋器可以處理的字符串(或解析樹)的長度是否有限制?
注意:我不需要要做到這一點,對我來說這是一個更深層次的問題反映了我的箱子裏面發生的事情一無所知。我想了解爲什麼Python在這裏失敗,並且如此災難性地(爲什麼不拋出異常?)
IIRC,Python解釋器segfaulting在任何情況下都被認爲是一個bug,不應該發生 - 這可能值得[bug報告](http://bugs.python.org/)。 – 2012-07-24 16:26:11
@Lattyware:在大多數情況下,不是全部。但是這個*應該被認爲是一個錯誤。 – 2012-07-24 16:27:33
有趣的是,'sum(xrange(75000))'似乎工作得很好 – inspectorG4dget 2012-07-24 16:27:39