1
kier 2014-08-10 10:56:25 +08:00
这个不就是将函数放到单独的线程执行么?
async这个decorator只不过是吧线程的操作独立出来,就不用在每个function里面都去重复这段代码而已,没什么特别 |
2
ddzz 2014-08-10 11:47:13 +08:00
要想酷,玩ruby
|
3
bcxx 2014-08-10 11:51:28 +08:00
最直接的方法就是用楼主你提到的方案,把要执行的操作放到另外一个 thread 里面做。
用 decorator 的意图就和 @kier 说的一样,为了复用而已(不要把这个模式和要做的东西混淆噢) 然后想更舒服一点的还可以用 work queue (例如 rq 之流)、gevent spawn 之类的。 |
4
hahastudio 2014-08-10 11:55:54 +08:00 2
Python 的 decorator 非常强大,你可以给函数包装出各种附加功能,比如这里有一堆的样例= =
https://wiki.python.org/moin/PythonDecoratorLibrary |
5
zenliver 2014-08-10 13:46:28 +08:00
看看tornado coroutine的实现呗
|
6
P9 2014-08-10 14:21:13 +08:00
Python cookbook 第三版 function --- 7.11. Inlining Callback Functions
https://glyph.twistedmatrix.com/2014/02/unyielding.html 《Don't use threads》 此文很长,tornado coroutine 的实现是学习了 https://twistedmatrix.com/documents/13.1.0/api/twisted.internet.defer.html#inlineCallbacks |
7
clino 2014-08-10 14:24:22 +08:00 via Android
'还有更强大的方法实现异步吗?'
觉得还是协程好,如gevent |
8
kzing OP |