相关疑难解决方法(0)

为什么Python 3比Python 2慢得多?

我一直试图理解为什么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)

我真的不认为出现了适用于变更whilexrange从2.7到3.4,我知道range已经开始作为对xrange在py3.4但文件说,

range() …

python performance cpython python-2.7 python-3.x

36
推荐指数
1
解决办法
2万
查看次数

处理python中的大型输入

几个月前我开始学习编程,最近刚发现了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)

我不确定我错过了什么.我怎样才能更快地处理这个?

python io

2
推荐指数
1
解决办法
4135
查看次数

取消数据结构.通过调用readlines()构建

我有一个用例,我需要从文件中的行构建一个列表.此操作将在分布式网络上执行100次.我一直在使用以下明显的解决方案:

with open("file.txt") as f:
    ds = f.readlines()
Run Code Online (Sandbox Code Playgroud)

我只是想到,或许我最好一次创建这个列表,将其腌制成文件,然后使用该文件取消每个节点上的数据.

如果我这样做,会有任何性能提升吗?

python performance pickle

0
推荐指数
1
解决办法
161
查看次数

标签 统计

python ×3

performance ×2

cpython ×1

io ×1

pickle ×1

python-2.7 ×1

python-3.x ×1