下面是一些代码,说明我的问题:Python - 如何使此代码异步?
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。
如何异步我的非套接字相关的阻塞函数?
`什么我想要做的是使我的阻塞功能异步`这没有任何意义。你可能希望你的函数阻塞,或者你希望它是异步的。如果你想要它异步,使用一个线程。我看不出有什么问题。 – Falmarri 2011-02-11 06:21:26
我希望我的阻塞函数是非阻塞的 – dave 2011-02-11 06:25:10
关于这些函数的执行是如何进行交错的,而不仅仅是相互之间,还有你运行的所有后续代码,还有很多问题需要回答。这就是操作系统的用途,以及为什么你一般都想使用一个线程来做类似的事情。 你能解释一下你不喜欢线程吗?这正是线程创建要解决的问题。 – 2011-02-11 06:30:53