gpt4 book ai didi

python - 在同步和异步情况下使用 time.clock() 进行错误的速度测试?

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:25 24 4
gpt4 key购买 nike

我正在阅读 tutorial关于gevent,并提供了示例代码来演示同步和异步情况:

import gevent
import random

def task(pid):
"""
Some non-deterministic task
"""
gevent.sleep(random.randint(0,2)*0.001)
print('Task', pid, 'done')

def synchronous():
for i in range(1,10):
task(i)

def asynchronous():
threads = [gevent.spawn(task, i) for i in xrange(1000)]
gevent.joinall(threads)

本文解释了“异步情况下的执行顺序本质上是随机的,并且异步情况下的总执行时间远小于同步情况”。所以我使用time模块来测试它:

print('Synchronous:')
start1 = time.clock()
synchronous()
end1 = time.clock()
print "%.2gs" % (end1-start1)

print('Asynchronous:')
start2 = time.clock()
asynchronous()
end2 = time.clock()
print "%.2gs" % (end2-start2)

但是,“异步”运行的时间比“同步”长得多:

ubuntu@ip:/tmp$ python gevent_as.py
Synchronous:
0.32s
Asynchronous:
0.64s
ubuntu@ip:/tmp$ python gevent_as.py
Synchronous:
0.3s
Asynchronous:
0.61s

我想知道我的测试程序出了什么问题?谢谢。

最佳答案

这是time.clock()的问题,在ubuntu下无法正常工作。详情见链接:Python - time.clock() vs. time.time() - accuracy?

我改变了测试程序:

print('Synchronous:')
start1 = time.time()
synchronous()
end1 = time.time()
print "%.2gs" % (end1-start1)

print('Asynchronous:')
start2 = time.time()
asynchronous()
end2 = time.time()
print "%.2gs" % (end2-start2)

那么‘异步’的测试速度比‘同步’快很多:

ubuntu@ip:/tmp$ python gevent_as.py
Synchronous:
1.1s
Asynchronous:
0.057s

关于python - 在同步和异步情况下使用 time.clock() 进行错误的速度测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13527299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com