小编Sta*_*ant的帖子

龙卷风的"产量"和机制中的asyncio的"产量"之间的差异?

在Tornado中,我们通常编写以下代码来异步调用函数:

class MainHandler(tornado.web.RequestHandler):

    @tornado.gen.coroutine
    def post(self):
        ...
        yield self.handleRequest(foo)
        ...

    @tornado.gen.coroutine
    def handleRequest(self, foo):
        ...
Run Code Online (Sandbox Code Playgroud)

但是在asyncio中(将随Python 3.4一起提供,可以从pip for Python 3.3安装),我们yield from用来实现同样的目的:

@asyncio.coroutine
def myPostHandler():
    ...
    yield from handleRequest(foo)
    ...


@asyncio.coroutine
def handleRequest(foo)
    ...
Run Code Online (Sandbox Code Playgroud)

从代码看,差异是yieldyield from.然而,前者handleRequest(foo)返回一个tornado.concurrent.Future对象,后者返回一个generator对象.

我的问题是,机制中两件事之间有什么区别?控制流程如何?谁调用实际handleRequest并检索其返回值?

附加:我具有Python生成器和迭代器的基本知识.我想通过使用这些来了解Tornado和asyncio的成就,以及这两种机制之间的区别.

python yield generator tornado

23
推荐指数
1
解决办法
4014
查看次数

重用Git子模块的子模块

我有一个Git项目.我们来说吧Proj.

Proj有两个子模块,LibUtils.

Lib也有子模块Utils.

现在问题是,当一个人想要时git clone --recursive Proj,他将需要下载Utils两次.当项目进展得更深时,情况可能会更糟.

那么如何Proj重新使用Utils已经下载的Lib

我的工作树:

Proj                      # Main project
+-- .git
`-- external
    +-- Lib               # Proj depends on Lib
    |   +-- .git
    |   `-- external
    |       `-- Utils     # Lib depends on Utils
    |           `-- .git
    `-- Utils             # Proj also depends on Utils
        `-- .git
Run Code Online (Sandbox Code Playgroud)

注意:

  1. 最好Utils留在external/Utils.

  2. 由于Windows兼容性,不允许使用符号链接.

如果有人能帮我解决这么复杂的问题,我将不胜感激.

git repository git-submodules

8
推荐指数
1
解决办法
463
查看次数

是否有编译无限时间的C++代码?

我经常听说"C++源代码需要大量的时间和内存来编译".

我也听说C++模板是Turing完成的,所以它可能会遇到Halting问题.

我还构建了一个C++项目,花费8 GiB的内存和2小时的时间.

所以,问题是:是否存在编译无限时间的C++代码?

(嵌套包含或嵌套模板是可检测的,因此不应计算.)

相关问题:是否存在可编译无限内存的C++代码?(我将它们分开,因为我期待不同的答案.)

c++ templates compilation turing-machines

-1
推荐指数
1
解决办法
551
查看次数