【发布时间】:2011-01-04 11:11:27
【问题描述】:
我正在用 Python 编写一个脚本,该脚本将允许用户输入一个字符串,该字符串将是一个指示脚本执行特定操作的命令。为了争论,我会说我的命令列表是:
lock
read
write
request
log
现在,我希望用户能够输入“日志”这个词,它会执行一个特定的操作,这很简单。但是,我想匹配部分单词。因此,例如,如果用户输入“lo”,它应该匹配“lock”,因为它在列表中较高。我已经尝试使用 libc 中的 strncmp 使用 ctypes 来完成此操作,但还没有做出正面或反面。
【问题讨论】:
-
速度到底有多重要?假设这是在用户输入命令时运行一次,并运行一小组命令(少于 1000 个),即使是最低效(实用)的实现也会在一毫秒内返回——这对于用户。
-
这是一个在 Twisted 框架上运行的网络应用程序,最多可能有 50 个用户同时输入命令,因此如果所有 50 个用户都输入命令并且我正在输入命令,则可能会有延迟解析它们的效率低下。
-
twisted 是线程化的。你仍然不会注意到任何影响。大多数计算机可以在您的手指按下一个键的时间内比较 10,000 个或更多的字符串。这称为过早优化,您是在把时间浪费在琐碎的事情上。
-
简单构建,然后测量性能问题所在。似乎不太可能是命令解析。
-
@SpliFF 我同意消息的精神,但是,Twisted 没有线程。至少,除非你这样做(例如 deferToThread)。