提供程序实用程序库
gevent-tools的Python项目详细描述
#gtools
提供[gevent]的python库(http://www.gevent.org)工具:
*一个gevent友好的pdb
*运行greenlet的树表示
线程应用程序)。如果你想让你的greenlet在后台运行,你可以改用"gtools.pdb"。
产生(p):
对于范围(60)内的i:
p.append(i)
gevent.sleep(1)
products=[]
gevent.spawn(产生,产品)
``
要调试它,只需在控制台上键入:
```bash
$python-m gtools.pdb app.py
````
,然后单击'**n**',直到到达"task.join()"行。此时,greenlet已经在后台工作了。要确保在pdb控制台上多次键入
*products*,您将看到正在运行的greenlet填写的产品列表
:
``bash
>;/app.py(9)<;module>;)
->;gevent.spawn(produce,products)
(pdb)products
[0,1,2]
(pdb)产品
[0,1,2,3,4,5,6,7]
```
导入gevent
>;>;导入gtools.tree
>;>;def iloop():
…gevent.sleep(1)
>>>;def oloop():
…gtools.spawn(iloop)
…gevent.sleep(0.5)
>;>task=gtools.spawn(oloop)
>; >;>gevent.sleep()
>;>tree=gtools.tree.tree()
>;
>;初始状态
>;打印(树)
根
打印(树)
根
<;greenlet.greenlet a>;状态=运行
<;greenlet b:oloop>;状态=完成:成功
<;greenlet c:iloop>;状态=运行
>;>;内环完成后
>;>;gevent.sleep(0.6)
>;>;打印(树)
根
#当不再引用greenlet
>;>print(tree)
root
<;greenlet.greenlet a>;status=running
<;greenlet b:oloop>;status=dead:垃圾回收
<;greenlet c:iloop>;状态=死亡:垃圾收集
>;
>;
>;新树
>;>;print(gtools.tree.tree())
root
```
以上示例要求使用"gtools.greenlet"。
#app.py
==
import gevent
def iloop():
gevent.sleep(1)
def oloop():
gevent.spawn(iloop)
gevent.sleep(0.5)
def run():
return gevent.spawn(oloop)
`````
``python
>;>从gtools.monkey导入patch gevent
>;>patch gevent()
>;>import app
>;>import gtools.tree
>;>;应用程序=app.run()
>;>;>;睡眠只是触发内部绿叶的繁殖
>;>;gevent.sleep()
>;>;树=gtools.tree.tree()
>;>;初始状态
>;>;打印(树)
root
>;<;greenlet.greenlet a>;status=running
<;greenlet b:oloop>;status=running
<;greenlet c:iloop>;status=running
````
您仍然可以获得有关
正在运行的greenlet的有限信息(请注意,树层次结构已丢失):
`` python
>;>import app
>;>import gtools.tree
>;>task=gevent.spawn(oloop)
>;>_app=app.run()
>;睡眠只会触发内部绿叶的生成
>;>;gevent.sleep()
>;>;tree=gtools.tree.tree(all=true)
>;>;初始状态
>;>;打印(tree)
root
<;greenlet.greenlet a>;status=running
提供[gevent]的python库(http://www.gevent.org)工具:
*一个gevent友好的pdb
*运行greenlet的树表示
线程应用程序)。如果你想让你的greenlet在后台运行,你可以改用"gtools.pdb"。
产生(p):
对于范围(60)内的i:
p.append(i)
gevent.sleep(1)
products=[]
gevent.spawn(产生,产品)
``
要调试它,只需在控制台上键入:
```bash
$python-m gtools.pdb app.py
````
,然后单击'**n**',直到到达"task.join()"行。此时,greenlet已经在后台工作了。要确保在pdb控制台上多次键入
*products*,您将看到正在运行的greenlet填写的产品列表
:
``bash
>;/app.py(9)<;module>;)
->;gevent.spawn(produce,products)
(pdb)products
[0,1,2]
(pdb)产品
[0,1,2,3,4,5,6,7]
```
导入gevent
>;>;导入gtools.tree
>;>;def iloop():
…gevent.sleep(1)
>>>;def oloop():
…gtools.spawn(iloop)
…gevent.sleep(0.5)
>;>task=gtools.spawn(oloop)
>;
>;>tree=gtools.tree.tree()
>;
>;初始状态
>;打印(树)
根
打印(树)
根
<;greenlet.greenlet a>;状态=运行
<;greenlet b:oloop>;状态=完成:成功
<;greenlet c:iloop>;状态=运行
>;>;内环完成后
>;>;gevent.sleep(0.6)
>;>;打印(树)
根
#当不再引用greenlet
>;>print(tree)
root
<;greenlet.greenlet a>;status=running
<;greenlet b:oloop>;status=dead:垃圾回收
<;greenlet c:iloop>;状态=死亡:垃圾收集
>;
>;
>;新树
>;>;print(gtools.tree.tree())
root
```
以上示例要求使用"gtools.greenlet"。
#app.py
==
import gevent
def iloop():
gevent.sleep(1)
def oloop():
gevent.spawn(iloop)
gevent.sleep(0.5)
def run():
return gevent.spawn(oloop)
`````
``python
>;>从gtools.monkey导入patch gevent
>;>patch gevent()
>;>import app
>;>import gtools.tree
>;>;应用程序=app.run()
>;>;>;睡眠只是触发内部绿叶的繁殖
>;>;gevent.sleep()
>;>;树=gtools.tree.tree()
>;>;初始状态
>;>;打印(树)
root
>;<;greenlet.greenlet a>;status=running
<;greenlet b:oloop>;status=running
<;greenlet c:iloop>;status=running
````
您仍然可以获得有关
正在运行的greenlet的有限信息(请注意,树层次结构已丢失):
`` python
>;>import app
>;>import gtools.tree
>;>task=gevent.spawn(oloop)
>;>_app=app.run()
>;睡眠只会触发内部绿叶的生成
>;>;gevent.sleep()
>;>;tree=gtools.tree.tree(all=true)
>;>;初始状态
>;>;打印(tree)
root
<;greenlet.greenlet a>;status=running