windows 下和 linux下python的效率差很大怎么回事?

比如最简单的foriinrange(30):forjinrange(30):printi+j在Windows要差不多半分钟,linux下只要0.023秒。这个差别也太大了... 比如最简单的
for i in range (30):
for j in range (30):
print i + j
在Windows要差不多半分钟,linux下只要0.023秒。这个差别也太大了吧?是windows下的python配置有问题?
展开
 我来答
知牛星
2020-04-10
知道答主
回答量:7
采纳率:100%
帮助的人:3.3万
展开全部
因为window上面的Python一般是Cpython,用C语言编写的,深层有进程解释器锁,在硬件一般的情况下方便了不少,但是随着硬件的优化,进程锁成为了制约运行速度的枷锁,后来却很难去除了,所以人们也常常说CPython没有真正的多线程,CPython根本没有利用好电脑的多核设备,相比于其他语言,CPython只能利用单核,肯定相对来说慢了很多。
但是Linux上面用的是JPython,用Java写的,没有进程锁这个累赘,肯定就快很多了。
kaisa1028
2012-05-02 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5429
采纳率:28%
帮助的人:2568万
展开全部
你在windows下用的idle吧,因为print要输出到stdout,idle里sys.stdout是直到窗口的,窗口是用tkinter写的,所以执行的时候执行的操作比cmdline/shell里要多得多。
我在windows的cmd里执行这个需要0.3秒,在idle里要3秒。
更多追问追答
追问
确实我用的idle。
但是即使不用print ,比如就换成 x += i + j 之类的速度也一样慢。
追答
我这里不用print的话,idle里面瞬间就完了。

def profile():
x=0
start=datetime.now()
for i in range (30):
for j in range (30):
x+=i+j
end=datetime.now()
print x
print end-start

>>> profile()
26100
0:00:00
>>>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yang_bigarm
2012-05-03 · TA获得超过3949个赞
知道大有可为答主
回答量:1664
采纳率:100%
帮助的人:617万
展开全部
效率上我觉得差不多吧,一定是你的windows的配置有问题吧,你在命令行下用timeit模块测试一下吧。前提是去掉大量的标准输入输出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
碧海蓝天书生
2012-05-02
知道答主
回答量:14
采纳率:0%
帮助的人:7.8万
展开全部
linux更轻吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友96a721061
2012-05-04 · TA获得超过511个赞
知道小有建树答主
回答量:762
采纳率:0%
帮助的人:377万
展开全部
stdout太花时间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式