python2/3 进程/线程效率对比

python2/3 进程/线程效率对比
说明:8核CPU,requests网络请求1w次(IO密集型),测试python各版本线程和进程的效率. 结论:重型(批量)任务,由于GIL的原因,综合考虑,进程较优。 256个(进/线)程 python2 多进程模式 耗时 14秒 python2 多线程模式 耗时 21秒 python3 多进程模式 耗时 14秒 python3 多线程模式 耗时 18秒 128个(进/线)程 python2 多进程模式 耗时 27秒 python2 多线程模式 耗时 35秒 python3 多进程模式 耗时 27...

#转载# python中的猴子补丁

#转载# python中的猴子补丁
monkey patch指的是在运行时动态替换,一般是在startup的时候. 用过gevent就会知道,会在最开头的地方gevent.monkey.patch_all();把标准库中的thread/socket等给替换掉.这样我们在后面使用socket的时候可以跟平常一样使用,无需修改任何代码,但是它变成非阻塞的了. 之前做的一个游戏服务器,很多地方用的import json,后来发现ujson比自带json快了N倍,于是问题来了,难道几十个文件要一个个把import json改成impo...

#原创# flask+gevent提高flask的并发能力

#原创# flask+gevent提高flask的并发能力
本以为开启threaded=True, flask的并发能力有所提高,然接口依然扛不住大并发。 解决方案: from gevent import monkey from gevent.pywsgi import WSGIServer monkey.patch_all() app = Flask(__name__) ...... WSGIServer(('0.0.0.0', 80), app).serve_forever() flask推荐解决方案: nginx + uWSGI + flask,参考:http://flask.pocoo.org/docs/0.10/deploying/uwsgi/ 更多解决方案: 前端...

#转载# python包requests下载大文件

#转载# python包requests下载大文件
requests单线程下载大文件 当使用requests的get下载大文件/数据时,建议使用使用stream模式。 当把get函数的stream参数设置成False时,它会立即开始下载文件并放到内存中,如果文件过大,有可能导致内存不足。 当把get函数的stream参数设置成True时,它不会立即开始下载,当你使用iter_content或iter_lines遍历内容或访问内容属性时才开始下载。需要注意一点:文件没有下载之前,它也需要保持连接。 iter_...

Selenium+PhantomJS+HeadlessChrome对比

Selenium+PhantomJS+HeadlessChrome对比
Headless Chrome 它是指在headless模式下运行谷歌浏览器。本质就是不用谷歌运行谷歌!它将由Chromium和Blink渲染引擎提供的所有现代网页平台的特征都转化成了命令行。phantomjs无人维护的情况下(Slobodin在Google论坛上发帖表示,鉴于Chrome 59推出了特性,他认为没有理由再继续维护Phantom.js。),headless chrome确实为一个更好的选择! Headless代码示例 from selenium import webdriver from seleni...

两个实用的 python 装饰器: timeout超时控制 和 trace单步追踪

两个实用的 python 装饰器: timeout超时控制 和 trace单步追踪
timeout超时控制 通过设置时钟信号给函数添加超时终端功能, 不适用于通过 os.system() 调用外部程序的情形. import signal import functools class TimeoutError(Exception): pass def timeout(seconds, error_message='Function call timed out'): def decorated(func): def _handle_timeout(signum, frame): raise TimeoutError(error_message) def wrapper(*args, *...

python高度健壮性的异常和超时问题

python高度健壮性的异常和超时问题
python高度健壮性的异常和超时问题 爬虫/Python这类型程序典型特征是意外多,无法确保每次请求都是稳定的返回统一的结果,要提高健壮性,能对错误数据or超时or程序死锁等都能进行处理,才能确保程序几个月不停止。 一、基础try&except异常处理 try&except的语句作用不仅仅是要让其捕获异常更重要的是让其忽略异常,因为爬虫中的绝大多数异常可能重新请求就不存在,因此,发现异常的时候将其任务队...

后台运行python程序(gui and not gui)

后台运行python程序(gui and not gui)
后台运行python程序(gui and not gui) 依赖说明: xvfb:虚拟设备,即一个虚拟的X服务器环境 [主要适用于Run Gui program on Server OS] pyvirtualdisplay:a python wrapper for Xvfb, Xephyr and Xvnc 依赖安装: sudo apt-get install xvfb pip install pyvirtualdisplay 示例代码: #!/usr/bin/env python from pyvirtualdisplay import Display from selenium import webdriver display =...

Selenium+PhantomJS(系列八:CSS选择器)

Selenium+PhantomJS(系列八:CSS选择器)
Selenium+PhantomJS(系列八:CSS选择器)   PhantomJS主要是通过JavaScript和CoffeeScript控制WebKit的CSS选择器、可缩放矢量图形SVG和HTTP网络等各个模块。   我们可以利用CSS选择器进行一些复杂的值选取操作。   querySelector示例一:   var content = page.evaluate(function () { var element = document.querySelector('#elem'); return element.textContent; }); cons...

Selenium+PhantomJS(系列七:OCR的优化技巧)

Selenium+PhantomJS(系列七:OCR的优化技巧)
Selenium+PhantomJS(系列七:OCR的优化技巧) Phantomjs可以选择元素区域截图,然后可以利用OCR做验证码识别,或做一些图形图像分析,等等。OCR引擎推荐tesseract。中文识别库下载:https://codeload.github.com/tesseract-ocr/tessdata/zip/master,另外tesseract支持字库训练,可以方便的训练出适合某种场景的识别库出来。这里简单说下OCR的优化。 优化技巧一: 1、网页按照比例放大后,再截图: driver...
Copyright © C/C++程序员之家 保留所有权利.   Theme  Ality 浙ICP备15011757号-3

用户登录