urls = ['http://HdhCmsTestgoogle测试数据', 'http://HdhCmsTestexample测试数据', 'http://HdhCmsTestpython.org']
def test(url):
return urllib2.urlopen(url).read()
def testIO(nbFutures):
ts = time.time()
map(test, urls * nbFutures)
span = time.time() - ts
print "time spend ", span
testIO(10)
在不同并发库下的代码,由于比较类似,我就不一一列出。大家可以参考计算密集型中代码做参考。
通过测试我们可以发现,对于IO密集型的任务,使用多线程,或者是多进程都可以有效的提高程序的效率,而使用伪线程性能提升非常显著,eventlet比没有并发的情况下,响应时间从9秒提高到0.03秒。同时eventlet/gevent提供了非阻塞的异步调用模式,非常方便。这里推荐使用线程或者伪线程,因为在响应时间类似的情况下,线程和伪线程消耗的资源更少。
总结
Python提供了不同的并发方式,对应于不同的场景,我们需要选择不同的方式进行并发。选择合适的方式,不但要对该方法的原理有所了解,还应该做一些测试和试验,数据才是你做选择的最好参考。
以上就是使用Python进行并发编程的内容,更多相关文章请关注PHP中文网(HdhCmsTestgxlcms测试数据)!
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did82910