Skip to content

Commit a35f1aa

Browse files
committed
add yield_task.py to class task(yield)
1 parent da631b9 commit a35f1aa

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

13.system/yield_task.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
2+
class Task:
3+
4+
def __init__(self, event=(lambda : print('task running'))):
5+
self.event = event
6+
self.cb = self.pre()
7+
next(self.cb)
8+
print('task init')
9+
10+
def pre(self):
11+
print('task start')
12+
flag = True
13+
while flag is True:
14+
flag = yield flag
15+
self.event()
16+
print('task exit')
17+
18+
def run(self, flag = True):
19+
try:
20+
res = self.cb.send(flag)
21+
return res
22+
except StopIteration as e:
23+
return False
24+
25+
if __name__ == "__main__":
26+
tmp = Task()
27+
28+
assert(tmp.run())
29+
assert(tmp.run())
30+
assert(False == tmp.run(False))
31+
32+
print(tmp.run())
33+
print(tmp.run(False))
34+
35+
36+
class music:
37+
38+
def __init__(self):
39+
self.task = Task(self.pre)
40+
self.args = None
41+
print('music init')
42+
43+
def pre(self):
44+
print('pre ', self.args)
45+
46+
def play(self, size=10):
47+
self.args = list(range(size))
48+
print(self.task.run())
49+
50+
def stop(self):
51+
print(self.task.run(False))
52+
self.__init__()
53+
54+
def loop(self):
55+
self.alive = False
56+
while self.alive:
57+
self.play()
58+
stop()
59+
60+
tmp = music()
61+
tmp.play()
62+
tmp.stop()
63+
tmp.play()

0 commit comments

Comments
 (0)