这是一些说明我的问题的代码:
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'
我有两个包含while True
循环的函数。这些将产生数据,然后我将记录在某个地方(很可能是一个 sqlite 数据库)。
我一直在玩线程并让它工作。但是,我真的不喜欢它......我想做的是让我的阻塞函数异步。就像是:
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)
如何在 Python 中实现这一点?我已经看到标准库带有 asyncore,并且这个游戏中的大牌是 Twisted,但这两个似乎都用于套接字 IO。
如何异步我的非套接字相关的阻塞函数?