私の問題を説明するコードは次のとおりです。
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ループを含む 2 つの関数があります。これらはデータを生成し、それをどこかに記録します (ほとんどの場合、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でこれを達成するにはどうすればよいですか? 標準ライブラリには非同期コアが付属しており、このゲームのビッグネームは Twisted ですが、これらは両方ともソケット IO に使用されているようです。
ソケットに関連しないブロッキング関数を非同期にするにはどうすればよいですか?