| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- """
- 协程 - 可以通过yield来调用其它协程,yield将执行权转让给其他协程
- 协程之间不是调用者与被调用者的关系,而是彼此对称平等的
- """
- def num_generator(start, end):
- """指定起始值的整数生成器"""
- for num in range(start, end + 1):
- yield num
- def square_mapper(numbers):
- """将数值映射为其平方的协程"""
- for num in numbers:
- yield num ** 2
- def prime_filter(numbers):
- """从数值中过滤出素数的协程"""
- for num in numbers:
- flag = True
- for factor in range(2, int(num ** 0.5 + 1)):
- if num % factor == 0:
- flag = False
- break
- if flag:
- yield num
- def main():
- tasks = []
- tasks.append(square_mapper(num_generator(1, 100)))
- tasks.append(prime_filter(num_generator(2, 100)))
- for _ in range(100):
- for task in tasks:
- print(f'切换到任务{task.__name__} => ', end='')
- try:
- print(task.__next__())
- except StopIteration as error:
- print(error)
- if __name__ == '__main__':
- main()
|