Я ищу способ получить материал от обратного вызова в генератор,
или генератор для наследования обратного вызова.Генератор как обратный вызов
При вызове обратного вызова генератор должен работать, yield
данных.
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)
.
В результате I не может использовать threading, поскольку python выполнит только этот обратный вызов. Впоследствии C-часть cli снова сделает материал, а python не будет выполнен.
Редактировать: Я мог бы зарегистрировать функцию 'poll', которая будет вызываться периодически. Положив ожидание, дайте хотя бы конструкцию очереди нитей выполнить некоторое время. Но это кажется грязным для реального кода.
Выполняет ли обратный вызов один или несколько (подает генератор *). Вы хотите что-нибудь сделать? Если вы используете сопрограмму вместо генератора, вы отправляете данные на нее, и она может давать данные или отправлять их другой сопрограмме. Я попытаюсь взломать пример, но вы должны посмотреть: http://pyvideo.org/video/213/pycon-2009--a-curious-course-on-coroutines-and-co (это слишком долго, но стоит его), слайды и файлы находятся по адресу http://www.dabeaz.com/coroutines/ – wwii
... Не помните это видео, а в описании: '' 'inlining callback functions''': http://pyvideo.org/video/2575/generators-the-final-frontier – wwii