AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 华为ICT练习考试题库 题目详情
CA4DD6A7C5A000017CD8E1331CCF1116
华为ICT练习考试题库
960
单选题

136.在Python的telnetlib中以下哪个方法可以非阻塞的读取数据?

A
 telnet.read very eager0
B
 telnet.read all
C
 telnet.read very lazy
D
 telnet.read eager

答案解析

正确答案:A

解析:

这道题考察的是 Python `telnetlib` 库中不同读取方法的行为特性,特别是关于“阻塞”与“非阻塞”的区别。 ### 正确答案分析 **答案:A** (注:选项 A 中的 `read very eager0` 应为排版错误,实际对应的方法名是 `read_very_eager`) 在 `telnetlib.Telnet` 类中,有几个用于读取数据的方法,它们的区别主要在于等待数据的方式: 1. **`read_very_eager()`**: * **行为**:尝试从内部缓冲区读取所有可用数据。如果缓冲区中没有数据,它**不会阻塞**等待网络数据到来,而是立即返回空字符串 `b''`。 * **特点**:非阻塞(Non-blocking)。适用于需要轮询检查是否有数据到达,而不希望程序挂起的场景。 2. **`read_eager()`**: * **行为**:读取容易获得的数据。如果缓冲区为空,它会短暂等待(阻塞),直到有数据到达或超时。 * **特点**:轻微阻塞。 3. **`read_lazy()`**: * **行为**:处理并返回队列中已存在的数据,不主动去 socket 获取新数据。如果队列为空,返回空字符串。 * **特点**:非阻塞,但通常用于更底层的处理,不如 `read_very_eager` 常用作为“非阻塞读取”的标准答案。 4. **`read_all()`**: * **行为**:读取所有数据,直到连接关闭。 * **特点**:**阻塞**(Blocking)。它会一直等待直到 EOF(End Of File),即连接断开。 ### 选项辨析 * **A. `telnet.read very eager0`**:虽然写法有误(多了空格和0),但明显指向 `read_very_eager()`。这是标准的非阻塞读取方法,如果没有数据立即可用,它就返回空,不会卡住程序。 * **B. `telnet.read all`**:对应 `read_all()`,这是完全阻塞的,直到连接结束。 * **C. `telnet.read very lazy`**:`telnetlib` 中没有 `read_very_lazy` 这个方法,只有 `read_lazy()`。即使指 `read_lazy`,它也是非阻塞的,但在常见的考试语境中,`read_very_eager` 是更典型的“尝试读取所有可用数据且不阻塞”的代表。此外,选项名称本身也是错误的。 * **D. `telnet.read eager`**:对应 `read_eager()`,它在缓冲区为空时会阻塞等待数据,因此不是纯粹的非阻塞方法。 ### 总结 题目问的是“**非阻塞**的读取数据”,`read_very_eager()` 的设计初衷就是在没有数据时立即返回,不造成阻塞,因此是最符合题意的选项。 > **注意**:在实际 Python 代码中,正确的方法调用是 `telnet.read_very_eager()`,选项中的写法存在明显的格式错误,但不影响对其所指代方法的判断。
题目纠错
华为ICT练习考试题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码