介绍完了gevent相关知识,我们继续回到源码部分。
main_greenlet = runner.greenlet
我们先不讲内部步骤,把我们已学的知识结合往下看。
首先这里,我们只看runner是本地模式的情况。这也是最方便我们学习的。此时runner对应上面最后一个逻辑分支:即
runner = environment.create_local_runner()
我们看看create_local_runner及相关代码段:
def _create_runner(self, runner_class, *args, **kwargs):
if self.runner is not None:
raise RunnerAlreadyExistsError("Environment.runner already exists (%s)" % self.runner)
self.runner = runner_class(self, *args, **kwargs)
return self.runner
def create_local_runner(self):
"""
Create a :