如何解决如何在Python中没有堆栈溢出的情况下进行递归?
我正在使用ZODB数据库的项目,并且存在以下问题:
def balance(db,id,max_sleep,manager=None):
'''to calculate the funds of an account(saving + checking)'''
if manager is None:
transaction = TransactionManager()
else:
transaction = manager
transaction.begin()
try:
name = db['account'][id].getName()
funds = db['saving'][name].balance + db['checking'][name].balance
transaction.commit()
return funds
except Exception:
sleep(randint(0,max_sleep)*(10**-6))
balance(db,manager)
我需要递归该函数,直到交易完成;我不需要将它们堆叠在一起,我尝试增加睡眠时间,但是事务仍然需要大量递归(即使只有2个线程!)。有没有办法解决这个问题!?
解决方法
考虑使用while
循环:
def balance(db,id,max_sleep,manager=None):
'''to calculate the funds of an account(saving + checking)'''
if manager is None:
transaction = TransactionManager()
else:
transaction = manager
while True:
transaction.begin()
try:
name = db['account'][id].getName()
funds = db['saving'][name].balance + db['checking'][name].balance
transaction.commit()
return funds
except Exception:
sleep(randint(0,max_sleep)*(10**-6))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。