48 lines
1010 B
Python
48 lines
1010 B
Python
"""
|
||
协程(coroutine)- 可以在需要时进行切换的相互协作的子程序
|
||
"""
|
||
import asyncio
|
||
|
||
from example15 import is_prime
|
||
|
||
|
||
def num_generator(m, n):
|
||
"""指定范围的数字生成器"""
|
||
yield from range(m, n + 1)
|
||
|
||
|
||
async def prime_filter(m, n):
|
||
"""素数过滤器"""
|
||
primes = []
|
||
for i in num_generator(m, n):
|
||
if is_prime(i):
|
||
print('Prime =>', i)
|
||
primes.append(i)
|
||
|
||
await asyncio.sleep(0.001)
|
||
return tuple(primes)
|
||
|
||
|
||
async def square_mapper(m, n):
|
||
"""平方映射器"""
|
||
squares = []
|
||
for i in num_generator(m, n):
|
||
print('Square =>', i * i)
|
||
squares.append(i * i)
|
||
|
||
await asyncio.sleep(0.001)
|
||
return squares
|
||
|
||
|
||
def main():
|
||
"""主函数"""
|
||
loop = asyncio.get_event_loop()
|
||
future = asyncio.gather(prime_filter(2, 100), square_mapper(1, 100))
|
||
future.add_done_callback(lambda x: print(x.result()))
|
||
loop.run_until_complete(future)
|
||
loop.close()
|
||
|
||
|
||
if __name__ == '__main__':
|
||
main()
|