继续分析那个爬虫程序,今天从中学习了lxml模块的基本使用。这个模块用来解析XML、HTML内容,据说速度上秒杀了"美丽的汤”。
官网: http://lxml.de/api/index.html
#coding=utf-8
'''
Created on 2013年11月13日
学习使用lxml
@author: dear_shen
'''
from lxml import etree
if __name__ == '__main__':
broken_str = '''
<!
记得学操作系统这门课的时候就打算自己写一个,居然一眨眼过了一年才写,真是对不起老师阿!
#coding=utf-8
'''
Created on 2013年11月13日
生产者与消费者python版
@author: dear_shen
'''
import threading
import Queue
import time
condition = threading.
原文链接找不到了,故整理格式后记录于此。
常用函数 ''''' Created on 2012-9-7 @author: walfred
@module: thread.ThreadTest3 @description:
''' import threading class MyThread(threading.
threading模块 Thread 线程类,这是我们用的最多的一个类,你可以指定线程函数执行或者继承自它都可以实现子线程功能; Timer与Thread类似,但要等待一段时间后才开始运行; Lock 锁原语,这个我们可以对全局变量互斥时使用; RLock 可重入锁,使单线程可以再次获得已经获得的锁; Condition 条件变量,能让一个线程停下来,等待其他线程满足某个“条件”; Event 通用的条件变量。多个线程可以等待某个事件发生,在事件发生后,所有的线程都被激活; Semaphore为等待锁的线程提供一个类似“等候室”的结构; BoundedSemaphore 与semaphore类似,但不允许超过初始值; Thread类 是你主要的线程类,可以创建进程实例。该类提供的函数包括: getName(self) 返回线程的名字 isAlive(self) 布尔标志,表示这个线程是否还在运行中 isDaemon(self) 返回线程的daemon标志 join(self, timeout=None) 程序挂起,直到线程结束,如果给出timeout,则最多阻塞timeout秒 run(self) 定义线程的功能函数 setDaemon(self, daemonic) 把线程的daemon标志设为daemonic setName(self, name) 设置线程的名字 start(self) 开始线程执行 关于join()和setDaemon join:如在一个线程B中调用threada.
创建一个“队列”对象 import Queue
myqueue = Queue.Queue(maxsize = 10)
Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。
将一个值放入队列中 myqueue.
上一篇文章提到了django 的语言问题,查阅资料后发现刚才的解释不是十分准确,看到一篇介绍相关内容的博客感觉不错,节选部分全文
先来看两个概念:
国际化:是指为了该软件在任何地区的潜在使用而进行程序设计的过程。 它包括了为将来翻译而标记的文本(比如用户界面要素和错误信息等)、日期和时间的抽象显示以便保证不同地区的标准得到遵循、为不同时区提供支持,并且一般 确保代码中不会存在关于使用者所在地区的假设。 您会经常看到国际化被缩写为“I18N” (18表示Internationlization这个单词首字母I和结尾字母N之间的字母有18个)。 本地化: 是指使一个国际化的程序为了在某个特定地区使用而进行实际翻译的过程。 有时,本地化缩写为L10N 。 使用Django 国际化 第一步:在你的Python代码和模板中嵌入待翻译的字符串。 第二步:把那些字符串翻译成你要支持的语言。 第三步:在你的Django settings文件中激活本地中间件。 如何嵌入待翻译的字符串 使用函数django.