Chinaunix首页 | 论坛 | 博客
  • 博客访问: 304957
  • 博文数量: 111
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 707
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-26 11:00
个人简介

小伙向前冲呀,小伙向前冲呀。

文章分类

全部博文(111)

文章存档

2014年(43)

2013年(68)

我的朋友

分类: Python/Ruby

2014-06-04 06:29:32

中的CURL PycURL使用例子。
在上有个常用的命令 curl(非常好用),支持curl的就是大名鼎鼎的libcurl库;libcurl是功能强大的,而且是非常高效的函数库。libcurl除了提供本身的C API之外,还有多达40种编程语言的Binding,这里介绍的PycURL就是libcurl的Python binding。

在Python中对网页进行GET/POST等请求,当需要考虑高性能的时候,libcurl是非常不错的选择,一般来说会比liburl、liburl2快不少,可能也会比Requests的效率更高。特别是使用PycURL的多并发请求时,更是效率很高的。个人感觉,其唯一的缺点是,由于是直接调用的是libcurl C库,PycURL的函数接口之类的还和C中的东西很像,可能不是那么的Pythonic,写代码的学习曲线稍微比liburl高一点儿。

例子:
  1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-

  3. '''
  4. Created on Dec 15, 2013

  5. @author: Jay
  6. '''
  7. import sys
  8. import pycurl
  9. import time

  10. class Test:
  11.     def __init__(self):
  12.         self.contents = ''

  13.     def body_callback(self, buf):
  14.         self.contents = self.contents + buf

  15. sys.stderr.write("Testing %s\n" % pycurl.version)

  16. start_time = time.time()

  17. url = ''
  18. t = Test()
  19. c = pycurl.Curl()
  20. c.setopt(c.URL, url)
  21. c.setopt(c.WRITEFUNCTION, t.body_callback)
  22. c.perform()
  23. end_time = time.time()
  24. duration = end_time - start_time
  25. print c.getinfo(pycurl.HTTP_CODE), c.getinfo(pycurl.EFFECTIVE_URL)
  26. c.close()

  27. print 'pycurl takes %s seconds to get %s ' % (duration, url)

  28. print 'lenth of the content is %d' % len(t.contents)
  29. #print(t.contents)
阅读(1847) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~