python - 为什么这种递归不会超过递归限制
问题描述
首先我想用threading.Timer做一个无限循环,之后我担心递归函数会超过Python中的递归限制,但是,经过如下测试,我发现递归函数会执行永远。这是为什么?
import threading
recursion_count=0
def recursion(count):
count=count+1
print("recursion_count: %d\n"%count)
t = threading.Timer(0.1, recursion, (count,))
t.start()
if __name__=='__main__':
recursion(recursion_count)
解决方案
这不超过任何递归限制的简单原因有两个:
- 如前所述,堆栈递归限制是每个线程。由于您正在启动新线程,因此它不适用于它们。
- 递归生成新线程也不会超过线程限制,因为您最多只能同时运行两个线程。一个线程创建一个新线程(最初在 100 毫秒内不做任何事情),然后终止。
如果要超出限制,请等待每个启动的线程从启动它的线程完成。
推荐阅读
- python - 为什么 python socket.recvfrom 得到的字节流与 WireShark 爬取的字节流不同?
- node.js - 如何重复(添加循环)具有角度内容的html元素
- javascript - 'Point-along-path' d3 可视化性能问题
- css - 在 react js 中为不同的页面应用不同的背景图片
- python - Python 数据抓取:用一系列 href 和 prettify 抓取标题不起作用
- python - TensorFlow 多类分类损失
- sql-server - Sql Server 代理作业中的包在 Integration Services 目录中成功时失败
- polymer - 使用特定 tensorboard 的 Web 组件的推荐方法是什么?
- amazon-web-services - 指标过滤器分辨率
- unity3d - 更改材质所依赖的纹理属性后,是否必须再次将纹理添加回材质中?