gpt4 book ai didi

也是生成器函数的 Python 方法?

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:52 25 4
gpt4 key购买 nike

我正在尝试构建一个方法,该方法也像生成器函数一样工作,只需按一下开关(下面的 want_gen)。

类似于:

def optimize(x, want_gen):
# ... declaration and validation code
for i in range(100):
# estimate foo, bar, baz
# ... some code here

x = calculate_next_x(x, foo, bar, baz)

if want_gen:
yield x

if not want_gen:
return x

但这当然行不通——Python 显然不允许在同一方法中使用 yieldreturn,即使它们不能同时执行。

代码相当复杂,重构声明和验证代码没有多大意义(状态变量太多——我最终会得到难以命名的 7+ 参数的辅助例程,这绝对是丑陋的).当然,我想尽可能避免代码重复。

是否有一些代码模式可以在这里实现我想要的行为?


我为什么需要它?

我有一个相当复杂且耗时的优化例程,我想在运行时获得有关其当前状态的反馈(例如在 GUI 中显示)。为了向后兼容,旧的行为需要存在。多线程和消息传递带来的额外好处太少,工作量太大,尤其是在需要跨平台操作时。

编辑:也许我应该提到,由于每个优化步骤都相当冗长(也涉及一些数值模拟),我希望能够在某个迭代中“介入”并调整一些参数,或者中止整个业务共。生成器似乎是个好主意,因为我可以自行决定启动另一个迭代,同时调整一些参数。

最佳答案

既然您似乎想要的只是对长时间运行的函数的某种反馈,为什么不直接传递对将定期调用的回调过程的引用呢?

关于也是生成器函数的 Python 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5432121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com