Python&Django
aixiaohei
软件工程师,J2EE的狂热爱好者!!现在学习动态语言python,研究Django框架及其应用。
展开
-
Django QuerySet的select_related()函数
<br />转自panjj 发表于 2010-07-04 11:30<br />Django获取数据实体的时候,返回的对象一个实体或多个实体,也就是QuerySet,它是Django专有的东西,具体的理解,它是类似Python的字典的东西,但它并不实现字典的所有方法。今天讲解的是它其中的一个函数select_related()。 <br />select_related()使用的场景,是获取实体的同时,能快速获取到它对应的外键关系实体。如果获取实体时没有使用select_related(),要引用该实体的外转载 2010-07-07 09:02:00 · 5994 阅读 · 0 评论 -
一个Python程序员的进化
<br />不同层次的Python程序员编出的Python代码显示出了不同的风格,代码都很简单,有趣。<br />编程新手def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1) print factorial(6) <br />一年编程经验(学Pascal的)def factorial(x): result = 1 i = 2 while原创 2011-06-01 15:37:00 · 537 阅读 · 0 评论 -
Python 自省指南
<br />有时候我们会碰到这样的需求,需要执行对象的某个方法,或是需要对对象的某个字段赋值,而方法名或是字段名在编码代码时并不能确定,需要通过参数传递字符串的形式输入。举个具体的例子:当我们需要实现一个通用的DBM框架时,可能需要对数据对象的字段赋值,但我们无法预知用到这个框架的数据对象都有些什么字段,换言之,我们在写框架的时候需要通过某种机制访问未知的属性。<br />这个机制被称为反射(反过来让对象告诉我们他是什么),或是自省(让对象自己告诉我们他是什么,好吧我承认括号里是我瞎掰的- -#),用于实现原创 2011-06-01 15:38:00 · 375 阅读 · 0 评论 -
Python垃圾回收(gc)拖累了程序执行性能
浅谈Python垃圾回收机制<br />在使用C语言开发时代,我们的开发效率(生产力的问题)受牵制于内存释放、泄露等问题,于是普遍的口号---“指针好难学”。时过境迁,当今的流行的语言都配套了内存自动回收机制,从而使我们有更多的精力去纠结于业务上处理。<br />常用的垃圾回收(GC)算法有这几种引用计数(Reference Count)、Mark-Sweep、Copying、分代收集。在Python中使用的是前者引用计数,工作原理:为每个内存对象维护一个引用计数。因此得知每次内存对象的创建与销毁都必须修改原创 2011-05-26 10:45:00 · 8609 阅读 · 1 评论 -
延长处理对python性能的影响
Python代码 #! /bin/usr/env python # -*- coding:utf-8 -*- import time #统计方法执行的时间 def count_time(func): def wrap(*args): start = time.time() func(*args) end = time.time() print "func:%s time:(%0.3f ms原创 2011-05-26 15:41:00 · 711 阅读 · 0 评论 -
python 线程池
<br />一个老外的开源项目中用的线程池代码,总共有 task, workthread, threadpool三大部分。不太清楚的是你说的queue是什么lib?Python代码 import threading class WorkerTask(object): """A task to be performed by the ThreadPool.""" def __init__(self, function, args=(), kwargs={}):原创 2011-05-26 14:32:00 · 1241 阅读 · 0 评论 -
python 多线程例子
1 简单的线程同步。 使用Thread对象的Lock和Rlock可以实现简单的线程同步,这两个对象都有acquire方法和release方法,对于那些需要每次只允许一个线程操作的数据,可以将其操作放到acquire和release方法之间。如下:import threadingimport timeclass mythread(threading.Thread): def __init__(self,threadname): threading.Thread.__init__(sel转载 2011-05-26 09:21:00 · 764 阅读 · 0 评论 -
python 线程,GIL 和 ctypes(转)
1 GIL 与 Python 线程的纠葛 GIL 是什么东西?它对我们的 python 程序会产生什么样的影响?我们先来看一个问题,运行下面这段 python 程序,CPU 占用率会到多少: # 请勿在工作中模仿,危险:)def dead_loop(): while True: passdead_loop() 答案是什么呢,占用 100% CPU?那是单核!还得是没有超线程的古董 CPU。在我的双核 CPU 上,这个死循环只会吃掉我一个核的工作负荷,也就是只占用 50% CPU。那如何能原创 2011-05-13 12:05:00 · 688 阅读 · 0 评论 -
Python 的好处
特性好处无须编译连接加快开发周期无须类型定义简洁、灵活自动内存管理避免内存管理的麻烦高级数据类型和操作内置对象加快开发进程面向对象代码重用; 能以C++, Java, COM, and .NET 整合可C语言扩展优化, 定制, 利用旧代码, 系统黏合类, 模块, 异常处理大规模的项目在进行大方面的模块设计简约优雅的语法和设计可靠, 可维护, 易学, 更少隐藏bug动态装载C模块简单的扩展,二进制码体积更小动态装载python模块程序可以在运行中修改通用的对象接口代码能少限制更灵活运行时程序构造为将来预留处理原创 2010-07-22 09:57:00 · 634 阅读 · 0 评论 -
学习资源
<br />http://blog.csdn.net/ruby_beginner/category/339308.aspx原创 2010-07-23 11:21:00 · 372 阅读 · 0 评论 -
Request对象和response 对象
概述Django 使用 request 和 response 对象表示系统状态数据..当请求一个页面时,Django创建一个 HttpRequest 对象.该对象包含 request 的元数据. 然后 Django 调用相应的 view 函数(HttpRequest 对象自动传递给该view函数), 每一个 view 负责返回一个 HttpResponse 对象.本文档解释了 HttpRequest 和 HttpResponse 对象的 API.HttpRequest 对象属原创 2010-07-20 10:17:00 · 860 阅读 · 0 评论 -
django的转义总结:escape,autoescape,safe,mark_safe
何谓转义?就是把html语言的关键字过滤掉。例如,就是html的关键字,如果要在html页面上呈现,其源代码就必须是PS:转义其实就是把HTML代码给转换成HTML实体了!默认情况下,django自动为开发者提供escape功能,即在html代码render之前,先进行转义,然后再呈现出来。这样的话,我们如果想输出一个链接,被转义之后,可能就无法得到我们想要的结果。 例如,下面的method,如果用户是匿名用户,则输出“匿名用户”,否则,输出一个链接,指向用户的profile: def get_userna原创 2010-07-19 17:18:00 · 2398 阅读 · 1 评论 -
Django Message框架尝鲜
一 介绍Django1.2之前有个基于cookie 和session的Message框架,是针对验证用户的,现在Django1.2框架扩展了Message,让它也支持匿名用户。也就是说用户不需要通过验证,即可用Message框架了。Message框架允许你临时存储信息到request里,然后取出来显示他们。每条信息由自己的level(等级)来决定它们的显示优先级。比如:info 一般的信息,warning警告,或者error错误。二启用Message框架Message框架其实可以当成一个中间件类和相应的上下转载 2010-07-07 08:46:00 · 4138 阅读 · 1 评论 -
Django一个比较隐含的函数url
Django下有一个比较隐含的函数url,在django/conf/urls/defaults模块中,虽然只有短短的10行代码,但功能却很了得。起初初学Django,并没有发现它,Templates的链接地址都是根据urlpatterns定义的地址,拼凑成地址字符串,很难看,而且Templates里拼凑成的地址,随着页面的增加而不断增加,一旦在urlpatterns里的某个地址改变了叫法,那眼泪可是哗哗的,有多少的拼凑的地址就得改动多少处!这时发现了url函数,这下可都好了,不管urlpatterns里的某转载 2010-07-07 08:52:00 · 2040 阅读 · 0 评论 -
Python线程指南
Python线程指南 1. 线程基础1.1. 线程状态线程有5种状态,状态转换的过程如下图所示: 1.2. 线程同步(锁)多线程的优势在于可以同时运行多个任务(至少感觉起来是这样)。但是当线程需要共享数据时,可能存在数据不同步的问题。考虑这样一种情况:一个列表里所有元素都是0,线程"set"从后向前把所有元素改成1,而线程"print"负责从前往后读取列表并打印。那转载 2011-06-28 10:38:00 · 584 阅读 · 0 评论