Aquí hay un código que ilustra mi problema:Python: ¿cómo puedo hacer que este código sea asíncrono?
def blocking1():
while True:
yield 'first blocking function example'
def blocking2():
while True:
yield 'second blocking function example'
for i in blocking1():
print 'this will be shown'
for i in blocking2():
print 'this will not be shown'
Tengo dos funciones que contienen while True
bucles. Esto arrojará datos que luego registraré en algún lugar (muy probablemente, en una base de datos sqlite).
He estado jugando con el roscado y lo he puesto en funcionamiento. Sin embargo, realmente no me gusta ... Lo que me gustaría hacer es hacer que mis funciones de bloqueo sean asincrónicas. Algo como:
def blocking1(callback):
while True:
callback('first blocking function example')
def blocking2(callback):
while True:
callback('second blocking function example')
def log(data):
print data
blocking1(log)
blocking2(log)
¿Cómo puedo lograr esto en Python? He visto que la biblioteca estándar viene con asyncore y el gran nombre en este juego es Twisted, pero ambos parecen usarse para socket IO.
¿Cómo puedo sincronizar mis funciones de bloqueo no relacionadas con el socket?
'Lo Me gustaría hacer es hacer que mis funciones de bloqueo sean asincrónicas. Eso no tiene ningún sentido. O deseas que tu función se bloquee o quieres que sea asincrónica. Si lo quiere asíncrono, use un hilo. No veo cuál es el problema. – Falmarri
Quiero que mis funciones de bloqueo sean no bloqueantes – dave
Hay muchas preguntas que deben ser respondidas acerca de cómo se intercala la ejecución de esas funciones, no solo entre ellas, sino con todo el código subsiguiente que se ejecuta. Esto es para lo que es el sistema operativo, y por qué generalmente quieres usar un hilo para algo así. ¿Puede explicar lo que no le gusta de enhebrar? Este es exactamente el tipo de problema que se creó para resolver. –