对于这个问题,我换了一个角度思考,同时对比了几种方案。
方案0:for循环
- import time
- start = time.time()
- for i in range(100000000):
- pass
- print (time.time()-start)
复制代码
结果:
5.08899998665
方案1:for循环(同时也进行自相加计算,与while执行相同的运算)
- import time
- start = time.time()
- j = 0
- for i in range(100000000):
- j += 1
- print (time.time()-start)
复制代码
结果:
9.80500006676
方案2:while循环(判断和自相加运算)
- import time
- start = time.time()
- j = 0
- while j<100000000:
- j += 1
- print (time.time()-start)
复制代码
结果:
7.43400001526
方案3:多线程while循环(排除判断,仅保留自相加运算)
【#方案3因为是去除了判断,所以用了2个线程:一个线程控制while循环;另一个线程控制计时】
- from threading import Thread
- import time
- def running():
- global count
- count = 0
- while True:
- count += 1
- def timedelay(sec=6.5):
- time.sleep(sec)
- print count
- t1 = Thread(target=running,args=())
- t2 = Thread(target=timedelay,args=())
- t1.start()
- t2.start()
复制代码
结果:
100466769
# 经过多次测试后,大约在6.5秒的时候,自相加接近100000000。
结论:
对比方案0和1: 自相加几乎要多增加1倍的运算时间
对比方案1和2: 都有自相加的情况下,while循环(加判断)比for循环用时要短。
对比方案2和3: 若while循环没有判断,仅保留自相加的情况下,要比既有自相加又有判断的while循环运算时间短。
综合运算速度快慢比较,由快到慢依次是:
空for循环 < 仅保留自相加的while循环 < 既有自相加又有判断的while循环 < 带自相加的for循环