45 lines
974 B
Python
45 lines
974 B
Python
"""
|
|
|
|
使用协程 - 查看协程的状态
|
|
|
|
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)
|