您现在的位置是:首页 > 电脑 > 

为什么Python 中的代码速度较慢?(Why is this code slower in Python ?)

2025-07-17 16:45:20
为什么Python 中的代码速度较慢?(Why is this code slower in Python ?) 我刚刚编写了这段代码,我想知道为什么它在Python 中表现得更差? 所有平台都一样吗? 这只是运气不好,还是Py通常较慢? 谢谢! 性能: python 2.6 python .1 pypy 1.5 li
为什么Python 中的代码速度较慢?(Why is this code slower in Python ?)

我刚刚编写了这段代码,我想知道为什么它在Python 中表现得更差? 所有平台都一样吗? 这只是运气不好,还是Py通常较慢?

谢谢!

性能:

python 2.6 python .1 pypy 1.5 linux 2.2s 2.4s 0.8s os x 2.5s .4s 0.7s

代码:(对不起,它太仓促和低效!)

import itertools import random def fptp_draw(result): votes = [prefs[0] for prefs in result] counts = [len([v for v in votes if v == c]) for c in [1, 2, ]] s = sorted(counts) #print('fptp', counts) return s[-1] == s[-2] def av_remove(prefs, cand): if prefs[0] != cand: return prefs else: return prefs[1:] def av_draw(result): nv = len(result) cands = [1, 2, ] while True: votes = [prefs[0] for prefs in result] counts = [len([v for v in votes if v == c]) for c in cands] #print('av ', cands, counts) s = sorted(counts) if s[-1]*2 > nv: return False if len(cands) == 2: return True loser = cands[counts.index(s[0])] cands.remove(loser) result = [av_remove(prefs, loser) for prefs in result] return False #orders = list(itertools.permutati([1, 2, ])) orders = [[1, 2, ], [1, , 2], [2, 1, ], [2, , 1], [, 1, 2], [, 2, 1]] #results = list(itertools.product(*itertools.repeat(orders, 6))) #results = random.sample(results, 5) def rand_vote(): return [(orders) for i in range(1000)] n = fptp = av = 0 for j in range(1000): r = rand_vote() #print() #print(r) n += 1 if fptp_draw(r): fptp += 1 if av_draw(r): av += 1 print(fptp*100.0/n, av*100.0/n) print(n)

I just wrote this code, and I was wondering why it performs significantly worse in Python ? Is it the same across all platforms? Is this just bad luck, or is Py generally slower?

Thanks!

Performance:

python 2.6 python .1 pypy 1.5 linux 2.2s 2.4s 0.8s os x 2.5s .4s 0.7s

Code: (sorry it's so hasty and inefficient!)

import itertools import random def fptp_draw(result): votes = [prefs[0] for prefs in result] counts = [len([v for v in votes if v == c]) for c in [1, 2, ]] s = sorted(counts) #print('fptp', counts) return s[-1] == s[-2] def av_remove(prefs, cand): if prefs[0] != cand: return prefs else: return prefs[1:] def av_draw(result): nv = len(result) cands = [1, 2, ] while True: votes = [prefs[0] for prefs in result] counts = [len([v for v in votes if v == c]) for c in cands] #print('av ', cands, counts) s = sorted(counts) if s[-1]*2 > nv: return False if len(cands) == 2: return True loser = cands[counts.index(s[0])] cands.remove(loser) result = [av_remove(prefs, loser) for prefs in result] return False #orders = list(itertools.permutati([1, 2, ])) orders = [[1, 2, ], [1, , 2], [2, 1, ], [2, , 1], [, 1, 2], [, 2, 1]] #results = list(itertools.product(*itertools.repeat(orders, 6))) #results = random.sample(results, 5) def rand_vote(): return [(orders) for i in range(1000)] n = fptp = av = 0 for j in range(1000): r = rand_vote() #print() #print(r) n += 1 if fptp_draw(r): fptp += 1 if av_draw(r): av += 1 print(fptp*100.0/n, av*100.0/n) print(n)

最满意答案

Pyk通常比python 2.x 慢 。 这将随着时间的推移而改变,但pyk的重点是功能完整性和稳定性,而不是速度。

Pyk is generally slower than python 2.x. That will change as time passes, but the focus for pyk was feature completeness and stability, not speed.

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/diannao/65537.html

相关标签:无
上传时间: 2023-04-22 19:30:41
留言与评论(共有 17 条评论)
本站网友 河北省霸州市
8分钟前 发表
2
本站网友 robots协议
21分钟前 发表
2
本站网友 mp3音乐下载器
25分钟前 发表
r = rand_vote() #print() #print(r) n += 1 if fptp_draw(r)
本站网友 熊猫金银币
9分钟前 发表
[2
本站网友 山也迢迢水也迢迢
4分钟前 发表
1]] #results = list(itertools.product(*itertools.repeat(orders
本站网友 两会2019
4分钟前 发表
2
本站网友 太平洋人寿保险
28分钟前 发表
] def av_draw(result)
本站网友 肌肉酸痛
5分钟前 发表
这将随着时间的推移而改变
本站网友 苏州路劲凤凰城
26分钟前 发表
2
本站网友 蛔虫图片
0秒前 发表
return False if len(cands) == 2
本站网友 河北国资委
30分钟前 发表
python 2.6 python .1 pypy 1.5 linux 2.2s 2.4s 0.8s os x 2.5s .4s 0.7s Code
本站网友 北京改装
11分钟前 发表
还是Py通常较慢? 谢谢! 性能: python 2.6 python .1 pypy 1.5 linux 2.2s 2.4s 0.8s os x 2.5s .4s 0.7s 代码
本站网友 张家口租房网
30分钟前 发表
6))) #results = random.sample(results
本站网友 铜陵美食
5分钟前 发表
而不是速度
本站网友 南通不孕不育
13分钟前 发表
Pyk is generally slower than python 2.x. That will change as time passes
本站网友 西南药业股吧
6分钟前 发表
counts) s = sorted(counts) if s[-1]*2 > nv