【发布时间】:2015-07-14 01:56:22
【问题描述】:
我正在寻找一种将回调中的内容获取到生成器中的方法,
或生成器继承回调。
当回调被调用时,生成器应该运行,yielding 数据。
def my_callback(some_data):
my_generator.execute(some_data) # what to do?
def my_generator():
while True:
yield some_data # from my_callback
# main program
for x in my_generator:
print(x)
# This is pseudo python code.
虽然我通常会使用队列和线程来运行并获取回调,但在这种情况下,我在调用 my_callback(data) 的 cli 的 python 扩展中运行。
结果,我不能使用线程,因为 python 只会执行该回调。
之后 cli 的 C 部分将再次执行操作,并且不执行 python。
编辑:我可以注册一个'poll'函数,它会被定期调用。在那里等待至少给线程队列构造一些时间来执行。但这对于实际代码来说感觉很脏。
【问题讨论】:
-
回调执行一次还是多次(馈送生成器)。你想制作某种管道吗?如果您使用协程而不是生成器,您可以向它发送数据,它可以产生数据或将其发送到另一个协程。我会尝试举一个例子,但是,你应该看 - pyvideo.org/video/213/…(它很长但值得),幻灯片和文件位于dabeaz.com/coroutines
-
...不记得这个视频,但在描述中:```内联回调函数```:pyvideo.org/video/2575/generators-the-final-frontier