n00b问题:Coroutines的更好语法?

首先,我是Python N00B,所以请随时评论任何内容
我在做"错误的方式".我正在构建一个离散事件模拟
工具.我想使用Coroutines.但是,我想知道是否有
隐藏收益率声明的任何方法.
我有一个我想这样的课:
班级(演员):
def go(self):
成功= true
成功:
结果= self.ping(" 128.111.41.38")
如果结果!="成功":
成功= false
打印" Done Done"
但是因为我无法隐藏ping中的屈服,因为我找不到
方便地获得对Coroutine的自我引用的方法(已使用
按事件队列传递结果),我的代码看起来像这样:
班级(演员):
def go(self):
#我不喜欢下一行
self.this_pointer =(无效)
成功= true
成功:
#我想摆脱下一行的产量
结果=(屈服self.ping(" 128.111.41.38"))
如果结果!="成功":
成功= false
打印" Done Done"
我在此处发布了一个更详细的版本,这是一个咆哮:http://illusorygoals.com/post/49926627/
我想知道,有没有办法获得我想要的语法?后
昨晚熬夜以获得概念证明与
Coroutines,我的老板对此表示失望
Pinger代码(我们同意上面所需的语法).我花了几乎2
今天的小时将系统迁移到线程.那使我的老板
快乐,但是我仍然很好奇,如果我能做些挽救
Coroutine版本.
问候,
IG

# 回答1


在9月12日,8:08*下午,我...@inlusorygoals.com写道:
尽管我确实浏览了您的链接,但我没有阅读整个帖子.我不
知道您的整个问题,但似乎您正在尝试通知
其身份的生成器.这是解决该问题的解决方案;
也许它与您有关. (较短的反驳是:"只需使用
封闭.")
def gen():
def _gen():
而1:
产量1,"我是%r'%ob
产量2,"我是%r'%ob
产量3,"我是%r'%ob
ob = _gen()
返回ob
gens = [gen(gen(),_在范围(4)中]
对于我在范围(6)中:
打印i
对于Gens的G:
打印G.Next()
/输出(冗长):
0
(1,'我是')
(1,'我是')
(1,'我是')
(1,'我是')
1
(2,'我是<发电机对象,at 0x009fec10>')
(2,'我是')
(2,'我是')
(2,'我是')
2
(3,'我是')
(3,'我是')
(3,'我是')
(3,'我是')
3
(1,'我是')
(1,'我是')
(1,'我是')
(1,'我是')
4
(2,'我是<发电机对象,at 0x009fec10>')
(2,'我是')
(2,'我是')
(2,'我是')
5
(3 ,'我是')
(3,'我是')
(3,'我是')
(3,'我是<发电机对象,at 0x009fec88>')
# 回答2


在9月12日,9:08*下午,我...@inlusorygoals.com写道:
我认为您在标准Python版本中使用线程.
当您从一个屈服时,发电机不能用作COROUTINE
嵌套的呼叫(他们只能深入一个水平).
您可以使用无标准版本的无固定python获得Coroutines
Python.但是即使没有stackless,我也得到了你的印象
在类似线的东西上建造旋点.那里
不是Coroutine语法.
卡尔银行
# 回答3


在9月13日,2:08*am,i ...@inlusorygoals.com写道:
您无法避免产量,而发电机也不是Coroutines.一个
不久前,我定义了这种问题
" cogogenerators",大致是为了发电机
例程,即他们可以将"屈服控制"传递给另一个
Cogogener [1].
[1] http://www.marooned.org.uk/~arno/pyt...generator.html
- -
Arnaud
# 回答4


在9月12日,8:08*下午,我...@inlusorygoals.com写道:
您可以"看书的背面" - 下载simpy,看看如何
他们这样做.
- 保罗

标签: python

添加新评论