05 2019 档案
摘要:Python 队列 学习笔记 Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递 基本语法: obj.put(item,block,timeout)来增加线程队列,将item 放入队列,如果
阅读全文
摘要:Python 同步条件: 条件同步和条件变量同步差不多,只是少了锁 功能,因为条件同步设计于不访问共享资源的条件环境。event = threading.Event():条件环境对象 初始值为:False/ event.isSet():返回event的状态值 event.wait():如果event
阅读全文
摘要:Python 条件变量同步(Condition): 有一类线程需要满足条件之后才能继续执行,Python提供了threading..Condition。对象用于条件变量线程的支持。它除了能提供RLock()或 Lock()的方法外,还提苍了wait(),notify(),notifyAll()方法
阅读全文
摘要:Python 信号量 学习笔记 Semaphore 信号量semaphore 是用于控制进入数量的锁。有哪些应用场景呢,比如说在读写文件的时候,一般只能只有一个线程在写,而读可以有多个线程同时进行,如果需要限制同时读文件的线程个数,这时候就可以用到信号量了(如果用互斥锁,就是限制同一时刻只能有一个线
阅读全文
摘要:Python 异常处理 语法: 例子: try语句按照如下方式工作; 首先,执行try子句(在关键字try和关键字except之间的语句) 如果没有异常发生,忽略except子句,try子句执行后结束。 如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 ex
阅读全文
摘要:Python 面向对象 :特殊成员 1.0.1 __call__ :__call__()的本质是将一个类变成一个函数(使这个类的实例可以像函数一样调用) 直接用obj()调用: 1.0.2 __str__ :主要用来打印,str (obj),执行obj的__str__方法,并把返回值给obj 1.0
阅读全文
摘要:Python 面向对象 (五) 成员修饰符 1.0 面向对象成员: 1.0.1 共同成员 1.0.2 私有成员,__attr,就是私有成员,外部没法直接访问。 要想访问私有字段,就可以用其他方法,间接访问。 静态字段,私有化 方法静态化访问: 2.0 方法的私有化:
阅读全文
摘要:1.0 面向对象类成员: 1.1 字段 1.1.1 普通字段,保存在对象里面,调用 不用(),只能通过对象访问。 1.1.2 静态字段,把普通字段写到类里面就是静态字段,表示默认值。可以直接用类直接调用,或者用对象 1.2 方法 1.2.1 普通方法,保存在类里面,调用 用对象,方法(),self是
阅读全文
摘要:python 不用考虑多态,python 原生是多态的 不同的 子类对象 调用相同的 父类方法,产生不同的执行结果
阅读全文
摘要:面向对象三大特性之二:继承 (Inheritance) Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。 1.0.1 继承写法 最简单的练习题: 1.0.2 继承重写: 如果 不想用父类里面的方法就可以把父类里面的方法,重新写一个。 执行的时候,就不会去找父类的方法了。 如
阅读全文
摘要:1.0.1 类的定义: 函数定义:def +函数名(参数) 面向对象: class >>>>>类,class Bar: >>>>>>名字叫Bar的类 def >>>>>>方法,def foo():>>>>>>名字叫foo 的方法 self>>>>>> 方法里面的第一个参数必须是self. 1.0.2
阅读全文
摘要:死锁: 所谓死锁,就是指俩个或俩个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法说推进下去 注意:Thread-1 开始执行的时候,执行完doA的时候,释放了lockA与lockB. 同Thread-1开始执行doB的时候,因为这个时间是没有同步锁的,
阅读全文
摘要:1.0 面向对象的方法来创建线程: 2.0 Python线程同步锁: 同步锁:通常被用来实现共享资源的同步访问,为每一个共享资源创建一个Lock对象当你需要访问该资源时,调用qcuqire方法来获取锁对象(如果其他线程已经获得该锁,则当前线程需等待期被释放),待资源访问完后,在调用release方法
阅读全文
摘要:选择器(Selectors) 当抓取网页时,你做的最常见的任务是从HTML源码中提取数据。现有的一些库可以达到这个目的: BeautifulSoup 是在程序员间非常流行的网页分析库,它基于HTML代码的结构来构造一个Python对象, 对不良标记的处理也非常合理,但它有一个缺点:慢。 lxml 是
阅读全文
摘要:1.0 threading 的join方法就是用来阻塞用的,可以阻塞主线程,等待所的子线程结束后,然后再运行后面的程序: 此时,会等t2运行完成后,才执行最后的print语句。 此时,只会运行完t1后,就会执行最后的print 2.0 threading 的daemon,当我们使用setDaemon
阅读全文
摘要:多线程实例: 共节省两秒时间,以最大的时间为准,小的时间就是省下来的时间。 IO密集型项目,多线程可以节省时间,像爬虫这样的项目 计算密集型项目,就是用C来代替python写。 或者可以是协和+多进程。 单线程实例:
阅读全文
摘要:Command line tools:命令行工具 Scrapy是通过 scrapy 命令行工具进行控制的。 这里我们称之为 “Scrapy tool” 以用来和子命令进行区分。 对于子命令,我们称为 “command” 或者 “Scrapy commands”。 Scrapy 项目结构: scrap
阅读全文
摘要:Scrapy: Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码。对于会阻塞线程的操作包含访问文件、数据库或者Web、产生新的进程并需要处理新进程的输出(如运行shell命令)、执行系统层次操作的代码(如等待系统队列),Twisted提供
阅读全文
摘要:Python3 正则表达式: 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. 字符串也有很多表达式,可以查找,替换,拆分: string提供的方法是完全匹配,正则表达式用来模糊匹配的。 元字符:“.”, “*” , “?”,"$", "+","|","\","^"
阅读全文
摘要:Python sys模块
阅读全文
摘要:hon os 模块提供了非常丰富的方法用来处理文件和目录。常用的方法如下表所示: 1.0 os.getcwd() os.getcwd() 方法用于返回当前工作目录 2.0 os.chdir() os.chdir() 方法用于改变当前工作目录到指定的路径。 path -- 要切换到的新路径。 3.0
阅读全文
摘要:Python 列表生成式: x从range里面取元素,然后对x进行运算,生成列表 或者可以这样: 运算符可以是函数: 另一种赋值形式:要求一一对应,不然就报错。 Python 生成器:一边循环,一边计算的机制,叫作生成器 内存的效率 生成器就是一个可迭代对象!!! 生成器创建方式: 1.0 小括号的
阅读全文
摘要:Python 装饰器:
阅读全文
摘要:Python 闭包:Closure. 定义: python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure). 闭包是由函数及其相关的引用环境组合而成的实体. 函 数是一等公民(First cla
阅读全文
摘要:random() 方法返回随机生成的一个实数,它在[0,1)范围内。 注意:random()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。 练习:随机生成验证码 高级版: time函数: time模块的格式: 1.0 timestamp,通常说法:时间戳
阅读全文
摘要:内置函数: 1.0 map() map() 会根据提供的函数对指定序列做映射 以上的代码还可以直接用lambda: map()可以对列表进行处理 提供了两个列表,对相同位置的列表数据进行相加 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为
阅读全文
摘要:高阶函数: 变量可以指向函数,函数可以做为了参数被另一个函数调用,这种带函数为参数的函数就是高阶函数。 1.0 函数本身也可以赋值给变量,即:变量可以指向函数。 2.0 函数名也可以做为变量,给其他给函数做参数,同时调用函数名。 递归函数: 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本
阅读全文