小编Ant*_*ton的帖子

为什么 asyncio.sleep(0) 使我的代码更快?

如果我从扫描仪中删除这一行,

await asyncio.sleep(0)
Run Code Online (Sandbox Code Playgroud)

工作时间从5秒增长到400秒。

为什么会发生这种情况?

我的代码:

import os
import asyncio
import time

async def rl(response):
    await asyncio.sleep(0)
    return response.readlines()  

async def scan_Ip(addr):
    print(addr)
    response = os.popen("ping -n 1 " + addr)
    data = await rl(response)
    for line in data:
        if 'TTL' in line:
            print(data)

async def scan():
    tasks=[]
    for ip in range(0, 256):
        tasks.append(asyncio.create_task(scan_Ip(f'192.168.8.{ip}')))
    await asyncio.wait(tasks)

if __name__ == '__main__':
    start_time = time.time()
    asyncio.run(scan())
    print(f"--- {time.time() - start_time} seconds ---")
Run Code Online (Sandbox Code Playgroud)

python python-asyncio

10
推荐指数
2
解决办法
8721
查看次数

标签 统计

python ×1

python-asyncio ×1