内置输入和sys.stdin.readline函数不完全相同,哪一个更快可能取决于你正在做什么的细节.正如
aruisdante评论的那样,Python 3中的差异小于Python 2中的差异,当你提供的引用来自,但仍然存在一些差异.
第一个区别是输入有一个可选的提示参数,如果解释器以交互方式运行,将显示该参数.即使提示为空(默认值),这也会导致一些开销.另一方面,如果您确实需要提示,则可能比在每个readline调用之前执行打印更快.
下一个区别是输入从输入的末尾剥离任何换行符.无论如何你要剥离它,让输入为你做的更快,而不是做sys.stdin.readline().strip().
最后的区别是如何指示输入的结束.如果没有更多输入(stdin已在另一端关闭),当你调用它时,输入将引发一个EOFError.另一方面,sys.stdin.readline将在EOF返回一个空字符串,您需要知道该字符串以进行检查.
还有第三个选项,使用sys.stdin上的文件迭代协议.这很可能与调用readline非常相似,但也许更好的逻辑.
我怀疑虽然各种选项之间的性能差异可能存在,但它们比简单地从磁盘读取文件(如果它很大)并做任何你正在做的事情的时间成本要小.我建议你避免过早优化的陷阱,只做对你的问题最自然的事情,如果程序太慢(“太慢”非常主观),你做一些分析,看看什么是最多的时间.除非实际上重要,否则不要花费大量精力来决定采用不同的输入方式.