随笔分类 -  python

基础和进阶
摘要:池和回调函数 使用线程池和进程池的原因: 减少时间:在池中可以提前开几个线程线程不关闭,程序运行的时候可以直接使用线程,减少线启动和关闭的时间。 减少开销:有大量程序需要处理的时候如果使用多线程去处理,那么会需要开启很多的线程,如果超出CPU+1的数量,那么会造成程序执行效率低下。 但是如果使用线程 阅读全文
posted @ 2020-03-15 12:48 大道至诚 阅读(159) 评论(0) 推荐(0)
摘要:线程间队列通信 线程间通信用到的队列和进程间的通信队列不同,进程中的队列是在multiprocessing模块中封装的,从该模块导入即可,但是线程间的通信队列需要单独导入queue模块,threading模块中没有封装。 Queue: 导入:import queue 这个可以用于服务行业,先进先出 阅读全文
posted @ 2020-03-12 17:47 大道至诚 阅读(465) 评论(0) 推荐(0)
摘要:多线程中的锁问题 在多线程同步使用的时候存在数据的不安全问题,python解释器在底层添加了GIL全局解释器锁机制来控制锁的安全问题,但不是绝对的安全。在日常的开发中还需要开发者添加锁机制在代码中。 一、多线程之间的数据安全问题 (一)、 '+='、' ='、' ='、'/='、if语句和while 阅读全文
posted @ 2020-03-11 15:54 大道至诚 阅读(422) 评论(0) 推荐(0)
摘要:线程基础 一、线程和进程的区别 进程: 进程之间数据隔离,每一个进程分配一块内存 进程可以使用多核处理,操作系统调度 进程是资源计算机资源份分配的最小单位 进程有数据不安全的问题,需要用到锁和信号量 进程之间本身无法通信,但是可以使用第三方模块和工具来实现通信IPC 队列:基于socket、pick 阅读全文
posted @ 2020-03-10 11:51 大道至诚 阅读(117) 评论(0) 推荐(0)
摘要:队列和生产者消费者模型 一、队列Queue模块 用于IPC:进程之间的通信,具有同样功能的还有Manager模块 进程之间的通信可以用到的是队列、管道Pipe和第三方工具 队列是基于socket、pickle和锁来实现的,因为基于锁来实现,所以队列中的数据传输一定是安全的,但传输效率会有所损耗。 管 阅读全文
posted @ 2020-03-09 14:41 大道至诚 阅读(296) 评论(0) 推荐(0)
摘要:进程池和回调函数 一、管道 管道是多进程之间通信的一种方式,它是不安全的。 导入管道: from multiprocessing import Pipe con1, con2 = Pipe() 单进程中使用管道: 情形一:con1收数据,con2发数据 情形二:con1发数据,con2收数据 多进程 阅读全文
posted @ 2020-03-08 20:53 大道至诚 阅读(256) 评论(0) 推荐(0)
摘要:锁 一、使用锁的原因: 在进程的执行过程中,进程的执行顺序完全由CPU来调度和安排,没有固定的顺序,windows中会首要执行主进程,但是其他的操作系统在调度的时候不分主进程和子进程。为了使进程可以有序的调度必须使用锁机制。 二、锁机制下的情形: 情形一:当进程拿到钥匙后,开锁使用资源,在使用期间这 阅读全文
posted @ 2020-03-08 14:05 大道至诚 阅读(108) 评论(0) 推荐(0)
摘要:信号量 信号量和锁机制基本是类似的,都是为了让资源的分配和进程的调度更加的有序,但是和锁机制不同的是:锁机制一次只能获取一把钥匙,信号量一次可以获取多把钥匙,数量可以设定。 基本的流程: 导入模块:from multiprocessing import Semaphore 实例化信号量对象:se = 阅读全文
posted @ 2020-03-08 14:04 大道至诚 阅读(141) 评论(0) 推荐(0)
摘要:事件 导入模块:from multiprocessing import Event 实例化事件对象:e = Event() 事件是通过is_set()的bool值,去标识e.wait()的阻塞状态 当is_set()的bool值为False时,e.wait()是阻塞状态 当is_set()的bool 阅读全文
posted @ 2020-03-08 14:02 大道至诚 阅读(88) 评论(0) 推荐(0)
摘要:subprocess模块 Popen基本格式: subprocess.Popen('命令',shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) shell=True 表示在终端中运行的命令,stdout=subprocess.PIP 阅读全文
posted @ 2020-02-29 13:17 大道至诚 阅读(5213) 评论(0) 推荐(0)
摘要:collections模块 collections模块是数据类型的扩展模块,一些非常重要但平常又不经常使用的数据类型都放在该模块 (一)、单端队列 单端队列的特点: 先进先出:一边进另一边出,必须严格按照顺序进行 导入模块:import queue 实例化单端队列对象:q = queue.Queue 阅读全文
posted @ 2020-02-16 17:35 大道至诚 阅读(170) 评论(0) 推荐(0)
摘要:异常处理 异常处理的格式: 常用的异常处理类型: |异常名称 | 描述 | |: |: | |BaseException | 所有异常的基类| |SystemExit | 解释器请求退出| |KeyboardInterrupt | 用户中断执行(通常是输入^C)| |Exception |常规错误的 阅读全文
posted @ 2020-02-16 14:03 大道至诚 阅读(147) 评论(0) 推荐(0)
摘要:logging日志模块 一、login可以显示的信息类型: 调试信息:logging.debug('调试信息') 基础信息:logging.info('基础信息') 警告信息:logging.warning('警告信息') 错误信息:logging.error('错误信息') 严重错误信息:logg 阅读全文
posted @ 2020-02-16 10:09 大道至诚 阅读(108) 评论(0) 推荐(0)
摘要:hashlib模块 hashlib模块是一个摘要算法模块,能够把一个字符串数据类型的变量转换成一个定长的、密文的字符串,字符串里的每一个字符都是一个十六进制数。 一、hashlib模块算法的共同特点 对于同一个字符串,不管字符串有多长,只要是相同的,无论在任何环境下,多少次执行,在任何语言中使用相同 阅读全文
posted @ 2020-02-15 17:23 大道至诚 阅读(272) 评论(0) 推荐(0)
摘要:[TOC] 序列化模块汇总 一、序列和序列化的区别: 序列:在python中序列包括字符串、列表、元组,通常情况下可以被下标索引的数据类型才能被称为序列 序列化:序列化中的序列定义非常狭义,只包括字符串。把一个类型转换成字符串的过程被称为序列化 反序列化:从文件中读取数据并转换成原有格式的过程被称为 阅读全文
posted @ 2020-02-15 10:22 大道至诚 阅读(209) 评论(0) 推荐(0)
摘要:os模块 os模块是和操作系统直接进行交互的,sys模块是直接和python解释器进行交互的。 一、和工作目录有关的 os.getcwd():获取当前文件的工作目录,不是文件的存放路径,而是文件在哪个路径执行打印的就是哪个路径。如果希望获取当前文件所在的路径,那么就使用__file__。 os.ch 阅读全文
posted @ 2020-02-14 18:34 大道至诚 阅读(293) 评论(0) 推荐(0)
摘要:sys模块 sys.path: 当前文件的路径 sys.modules: 当前文件一共导入了多少的路径存在内存中 sys.platform: python解释器定义的当前的操作系统,这个是和python解释器打交道的,这个不准确 sys.exit(): 执行退出程序,退出后后续的程序不会再执行。 s 阅读全文
posted @ 2020-02-14 14:33 大道至诚 阅读(144) 评论(0) 推荐(0)
摘要:time模块 计算机的起始时间: 英国伦敦时间: 1970.1.1.0:0:0 北京时间: 1970.1.1.8:0:0 时间戳时间: time.time()获取当前时间的时间戳 时间戳是一个float格式的,例如:1581652597.4924521 格式化时间(str format time): 阅读全文
posted @ 2020-02-14 13:42 大道至诚 阅读(240) 评论(0) 推荐(0)
摘要:random模块 导入模块:import random 随机小数:random.random() 0 1之内的随机小数,每个小数取到的概率是相同的 计算机不能表示无限不循环小数,无限循环小数包含在float中 随机整数: random.randint(1,4),顾头顾尾,包含1和4的随机整数。 ra 阅读全文
posted @ 2020-02-14 09:54 大道至诚 阅读(264) 评论(0) 推荐(0)
摘要:re模块 使用re模块时需要先导入re模块 参数: pattern:正则匹配规则 string:需要进行匹配的字符串 flags 一、findall()的用法 格式:findall(pattern, string, flags=0) findall()返回值: 列表形式 所有符合匹配的结果都会写入列 阅读全文
posted @ 2020-02-13 14:17 大道至诚 阅读(182) 评论(0) 推荐(0)