我试图在位于单独的.py文件中的get请求中调用一个函数.
@gen.coroutine
def get(self):
logging.info('starting TEST4: ' + str(datetime.now()))
result = yield gen.Task(common.t2())
print result
logging.info('finished TEST4: ' + str(datetime.now()))
self.write('complete!')
Run Code Online (Sandbox Code Playgroud)
def t2():
""" This is a non-blocking function """
for x in range(10000000):
for y in range(10):
a = 1
a = "Slow non-blocking function"
return a
Run Code Online (Sandbox Code Playgroud)
我试图让函数t2运行异步并打印它返回的变量"a"的值.我也在Python 2.7中运行此代码,这也可能是一个问题.我究竟做错了什么?
注意:我也不想使用"concurrent.futures.ThreadPoolExecutor(8)"解决方案.
尽管它有注释,但它t2 是一个阻塞函数,所有函数都不使用回调或yield.并且没有有用的方法来进行t2非阻塞,因为它不依赖于任何外部事件.因为t2必须阻止它被调用的任何线程,所以在不阻塞主IOLoop线程的情况下调用它的唯一方法是在其他线程上调用它,并且最好的方法是使用a ThreadPoolExecutor.
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |