内置的input
和sys.stdin.readline
函数做的事情并不完全相同,哪一个更快可能取决于具体操作的细节.正如aruisdante comments 的那样,Python 3中的差异小于Python 2中的差异,而您提供的引用来自Python 2,但仍然存在一些差异.
第一个区别是,input
有一个可选的提示参数,如果解释器以交互方式运行,则会显示该参数.这会导致一些开销,即使提示是空的(默认设置).另一方面,如果你真的想得到提示的话,它可能比在每次readline
次通话前先打print
次快.
下一个区别是,input
从输入的末尾go 掉任何换行符.如果你无论如何都要脱掉它,那么让input
人为你脱掉它可能比让sys.stdin.readline().strip()
为你脱掉更快.
最后一个区别是如何指示输入的结束.如果没有更多的输入(stdin已在另一端关闭),input
将在您调用它时引发EOFError
.另一方面,sys.stdin.readline
将在EOF返回一个空字符串,您需要知道这一点才能进行判断.
还有第三个选项,在sys.stdin
上使用文件迭代协议.这很可能与拨打readline
很相似,但逻辑上可能更好.
我怀疑,虽然您的各种选项之间可能存在性能差异,但它们可能比从磁盘读取文件(如果文件很大)并执行任何操作所需的时间成本都要小.我建议你避免过早优化的trap ,只做对你的问题最自然的事情,如果程序太慢("太慢"是非常主观的),你可以做一些分析,看看什么是最耗时的.不要花太多精力在不同的输入方式之间做出 Select ,除非这真的很重要.