Python 3.5 中的 AsyncIO:何时使用以及何时避免 Await
在 Python 3.5 中使用 asyncio 时,了解以下内容至关重要:使用await 语法的适当场景。
何时使用Await
Await 应该用于执行 I/O 操作的异步函数。这包括访问文件系统、网络或任何其他可能阻止事件循环执行的资源的函数。通过使用await,任务将暂停,直到I/O操作完成,从而允许事件循环同时处理其他任务。
何时使用Await的示例:
- 从 URL 下载数据:content = wait download(url)
- 打开并读取文件:data = wait open_file(filename)
- 通过network: result = wait send_request(data)
何时避免 Await
避免等待不执行 I/O 操作的函数。对同步代码使用await 会带来不必要的开销并增加执行时间。
何时避免等待的示例:
- 解析数据:parsed_data = parse(input )
- 简单计算:result =calculate(a, b)
- 操作对象:object.value = new_value
特殊注意事项:
-
长时间运行的同步操作:避免在异步函数中需要很长时间(例如超过 50 毫秒)才能完成的同步操作。这可以阻止事件循环并阻止其他任务执行。
-
长同步操作的单独进程:如果需要长时间运行的同步操作,可以将其移至单独的进程,为其他任务释放事件循环。
-
用于 I/O 操作的 ThreadPoolExecutor: 使用 ThreadPoolExecutor 进行不应阻塞事件循环的 I/O 操作(例如 requests.get)。这可以通过避免与 ProcessPoolExecutor 相关的开销来提高性能。
以上是Python 3.5 中的 AsyncIO:何时使用 Await,何时避免?的详细内容。更多信息请关注PHP中文网其他相关文章!