| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- """
- 使用协程 - 查看协程的状态
- Version: 0.1
- Author: 骆昊
- Date: 2018-03-21
- """
- from time import sleep
- from inspect import getgeneratorstate
- def build_deliver_man(man_id):
- total = 0
- while True:
- total += 1
- print('%d号快递员准备接今天的第%d单.' % (man_id, total))
- pkg = yield
- print('%d号快递员收到编号为%s的包裹.' % (man_id, pkg))
- sleep(0.5)
- def package_center(deliver_man, max_per_day):
- num = 1
- # 创建状态(GEN_CREATED) - 等待开始执行
- print(getgeneratorstate(deliver_man))
- deliver_man.send(None)
- # 挂起状态(GEN_SUSPENDED) - 在yield表达式处暂停
- print(getgeneratorstate(deliver_man))
- # next(deliver_man)
- while num <= max_per_day:
- package_id = 'PKG-%d' % num
- deliver_man.send(package_id)
- num += 1
- deliver_man.close()
- # 结束状态(GEN_CLOSED) - 执行完毕
- print(getgeneratorstate(deliver_man))
- print('今天的包裹派送完毕!')
- dm = build_deliver_man(1)
- package_center(dm, 10)
|