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