由于项目的需要,学习了Django框架,Django框架的MTV很清晰,通过MTV能够很好地了解Django框架的内部机理。但是在使用过程中发现了一个严重的问题,就是当有大量IO(写数据库操作)的时候,系统处理超级慢(10万条数据用来进行机器学习花了大概三天)。

      当然效率低的这个问题最早的时候我个人认为这大概是由于Django框架封装性会导致这些问题,于是我就彻底抛弃了Django框架的封装的一些函数的使用(像save、delete等函数调用一次就会写一次数据库),回到了传统的方式:exec(sql)   -->   commit()    ,这种方式当有大量数据库操作的时候,最后之需要commit一次很大地提高了程序的运行效率,大概几十倍的水平,虽然使用这种方式解决了部分问题,但是想想看很多的网站都是使用的Django框架的,应该存在某些解决方式。
     经过查资料,发现Django已经很好地解决这个问题,Django ORM模式提供事务处理类:transaction。Django默认的事务处理方式是改动就提交,每执行一次就立即提交,这就会花费大量的时间用于IO。Django也支持一种所有工作都完成后才提交事务这种方式,这种方式就会在将很多写数据操作一次提交提高了程序的运行效率。它们定义的方式如下所示:
1、这种方式是Django的默认方式,每当函数里面执行一次save或者delete等,就会提交一次,很慢。
@transaction.autocommit
def function():
    ……
2、通过在函数前面加上这句,只会commit一次,程序效率提高很多。
@transaction.commit_on_success
def function():
    ……

Django框架效率问题的解决方法和总…的更多相关文章

  1. 安装scrapy框架的常见问题及其解决方法

    下面小编讲一下自己在windows10安装及配置Scrapy中遇到的一些坑及其解决的方法,现在总结如下,希望对大家有所帮助. 常见问题一:pip版本需要升级 如果你的pip版本比较老,可能在安装的过程 ...

  2. iOS AFNetworking 2.6.0框架导入报错解决方法

    最近手动导入AFNetworking 2.6.0框架时发现Xcode报如下3个错误: 1. Use of undeclared identifier ‘kSecFormatUnknown‘ 2. Us ...

  3. python网络爬虫(1)——安装scrapy框架的常见问题及其解决方法

    Scrapy是为了爬取网站数据而编写的一款应用框架,出名,强大.所谓的框架其实就是一个集成了相应的功能且具有很强通用性的项目模板. 其实在Linux和 Mac安装,就简单的pip命令即可: pip i ...

  4. django post请求 403错误解决方法

    --摘 第一次用Django做项目,遇到了很多问题. 今天遇到的问题是Django在处理post请求时多次出现403错误. 我先描述一下问题出现的环境:我用Django写了一个web服务端,姑且称它为 ...

  5. django框架效率

    1. django ORM模式提供食物处理类:transaction.Django默认的事务处理方式时改动就提交,每执行一次就立即提交,这就会花费大量的时间用于IO.Django也支持所有工作都完成后 ...

  6. C++操作MySQL大量数据插入效率低下的解决方法

    #include <iostream> #include <winsock2.h> #include <string> #include "mysql.h ...

  7. php5.4以上运行yii框架出现问题的解决方法

    Ubuntu Server 下安装 Mcrypt Php Extension http://blog.archean.me/2013/10/22/install-mcrypt-php-extensio ...

  8. Django+python报错与解决方法

    编码信息导致修改django文件下的debug.py文件331行的编码格式 with Path(CURRENT_DIR, 'templates', 'technical_500.html').open ...

  9. Django下TemplateDoesNotExist 异常的解决方法:

    在settings中添加代码如下获取templates路径: import os import os.path BASE_DIR = os.path.dirname(os.path.dirname(_ ...

随机推荐

  1. Spring配置搭建——Spring学习 day1

    对象准备 1.导包 Spring core ,context ,beans ,expression ,aop Apache commons logging 2.写入一个对象 这边写入User对象 3. ...

  2. sudo 及visudo用法

    visudo 编辑sudoers文件 1.命令功能 bisudo命令是专门用来编辑/etc/sudoers文件,同时提供语法检查等功能./etc/sudoes文件是sudo命令的配置文件. 2.语法格 ...

  3. VMware虚拟机中的CentOS7安装Nginx后本机无法访问的解决办法

    VMware虚拟机中的CentOS7安装Nginx后本机无法访问的解决办法 在linux上安装nginx 请参考:Linux Centos7 安装 nginx 在虚拟机centos7上安装nginx之 ...

  4. 深入理解JAVA虚拟机 晚期(运行期)优化(转载)

    这一章节的内容实用性不强 所以不再手打笔记 转载了一篇 原文地址是http://blog.csdn.net/qq_27350929/article/details/54837595 在部分的商用虚拟机 ...

  5. 【洛谷P1220】关路灯

    题目有点难描述,内容请直接看原题.. 题解: 可以发现人在关路灯时无论走什么样的路径,从宏观上来看被关的灯总是构成一段包含初始点的连续区间.比如要关掉下标为 l (l < st)的灯,则一定要先 ...

  6. 【NOIP2016提高组复赛day2】天天爱跑步

    题目 小 C 同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏. <天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一棵 ...

  7. LDA终极分析

    http://www.cnblogs.com/pinard/p/6867828.html http://www.52nlp.cn/lda-math-mcmc-和-gibbs-sampling2 htt ...

  8. JavaWeb面试篇(6)

    51.说一说Servlet的生命周期? Servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet.Servlet接口的init(),s ...

  9. html aside标签 语法

    html aside标签 语法 aside是什么意思? aside为语义化标签,通常用来描述与文档主体内容不相关的内容,其aside标签的内容应该与附近的内容相关. 作用:定义其所处内容之外的内容.直 ...

  10. H5 网站支付宝支付(前端部分)包含微信浏览器中的处理方法。

    手机网站唤起支付宝支付: H5 网站实现支付宝支付是一个很常见的需求: 实现方式主要是在后台配置和预支付, 前端需要做的就是唤起 支付宝App 然后就可以输入密码支付. 这个其实难度很低, 主要就是在 ...