我一直试图理解为什么Python 3在某些情况下与Python 2相比实际上需要花费很多时间,下面是我从python 3.4到python 2.7验证的少数情况.
注意:我已经解决了一些问题,比如为什么Python3中没有xrange函数? 并 在python3比python2慢得多环路 和比同一代码在Python3慢Python2,但我觉得我没有得到这背后问题的实际原因.
我已经尝试过这段代码来展示它是如何产生差异的:
MAX_NUM = 3*10**7
# This is to make compatible with py3.4.
try:
xrange
except:
xrange = range
def foo():
i = MAX_NUM
while i> 0:
i -= 1
def foo_for():
for i in xrange(MAX_NUM):
pass
Run Code Online (Sandbox Code Playgroud)
当我尝试用py3.4和py2.7运行这个程序时,我得到了以下结果.
注意:这些统计数据来自64 bit具有2.6Ghz处理器的计算机,并使用time.time()单循环计算时间.
Output : Python 3.4
-----------------
2.6392083168029785
0.9724123477935791
Output: Python 2.7
------------------
1.5131521225
0.475143909454
Run Code Online (Sandbox Code Playgroud)
我真的不认为出现了适用于变更while或xrange从2.7到3.4,我知道range已经开始作为对xrange在py3.4但文件说,
range() …
几个月前我开始学习编程,最近刚发现了codechef.
问题是,对于使用大量输入的问题,我的代码超出了时间限制.我甚至无法使输入测试工作.
codechef的描述:
输入
输入以两个正整数nk(n,k <= 10 ^ 7)开始.接下来的n行输入包含一个正整数ti,每个整数不大于10 ^ 9.
产量
写一个整数来输出,表示有多少整数ti可以被k整除.
这是代码:
n, t = [int(x) for x in input().split()]
c = 0
for i in range(n):
if not int(input()) % t:
c += 1
print(c)
Run Code Online (Sandbox Code Playgroud)
我不确定我错过了什么.我怎样才能更快地处理这个?
我有一个用例,我需要从文件中的行构建一个列表.此操作将在分布式网络上执行100次.我一直在使用以下明显的解决方案:
with open("file.txt") as f:
ds = f.readlines()
Run Code Online (Sandbox Code Playgroud)
我只是想到,或许我最好一次创建这个列表,将其腌制成文件,然后使用该文件取消每个节点上的数据.
如果我这样做,会有任何性能提升吗?