首先我知道我可以使用线程来完成这样的任务,就像这样:
import Queue
import threading
# called by each thread
def do_stuff(q, arg):
result = heavy_operation(arg)
q.put(result)
operations = range(1, 10)
q = Queue.Queue()
for op in operations:
t = threading.Thread(target=do_stuff, args = (q,op))
t.daemon = True
t.start()
s = q.get()
print s
但是,在谷歌应用引擎中有一个叫做 ndb tasklets 的东西,根据他们的文档,你可以使用它们并行执行代码。
Tasklet 是一种在没有线程的情况下编写并发运行的函数的方法;tasklet 由事件循环执行,并且可以使用 yield 语句暂停自己的 I/O 或其他操作阻塞。阻塞操作的概念被抽象到 Future 类中,但 tasklet 也可能产生一个 RPC 以等待该 RPC 完成。
是否可以使用上面的线程完成类似示例的操作?
我已经知道如何使用 get_async() 处理检索实体(从他们在文档页面的示例中获得),但在并行代码执行方面我非常不清楚。
谢谢。