在python发生器体中打开手柄的寿命
发布时间:2020-12-16 22:50:40 所属栏目:Python 来源:网络整理
导读:我有关于生成器和/或python的执行模型的问题. 给出如下内容: def g(filename): with open(filename) as handle: for line in handle: yield some_trasformation_on(line) 我的主要困惑是:如果处理会发生什么 res = g()print(next(res)) 只被召唤一次?手柄
我有关于生成器和/或python的执行模型的问题. 给出如下内容:
我的主要困惑是:如果处理会发生什么
只被召唤一次?手柄在程序的使用寿命期间是否保持打开状态?如果我们在发电机组中分配了稀缺资源怎么办?主题?数据库处理? 也许我认为发电机就像引擎盖下的功能一样. 最佳答案
用写的代码回答
如上所述,该文件将在程序的生命周期内保持打开状态.虽然你有一个res变量的引用,它保持生成器堆栈帧是活动的,所以获取with语句来关闭文件的唯一方法是继续调用next(),直到for循环正常结束. 如何清理发电机 设计用于发电机清理的工具是generator.close(),它在发电机内部引发了GeneratorExit. 这是一些工作代码,以说明如何完成它:
这是一个示例会话,显示实际发生的关闭操作:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |