Skip to content

Commit 4491e36

Browse files
committed
py实现协程
0 parents  commit 4491e36

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

dispatch.py

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# -*- coding: utf-8 -*-
2+
# @Author: lock
3+
# @Date: 2016-05-18 23:47:54
4+
# @Last Modified by: lock
5+
# @Last Modified time: 2016-05-18 23:47:54
6+
from collections import deque
7+
class Runner(object):
8+
def __init__(self, tasks):
9+
self.tasks = deque(tasks)
10+
11+
def next(self):
12+
return self.tasks.pop()
13+
14+
def run(self):
15+
while len(self.tasks):
16+
task = self.next()
17+
try:
18+
next(task)
19+
except StopIteration:
20+
pass
21+
else:
22+
self.tasks.appendleft(task)
23+
24+
def task(name, times):
25+
for i in range(times):
26+
yield
27+
print(name, i)
28+
29+
Runner([
30+
task('hsfzxjy', 5),
31+
task('Jack', 4),
32+
task('Bob', 6)
33+
]).run()

0 commit comments

Comments
 (0)