随笔分类 - Python
摘要:socketserver底层也是使用线程实现的并发,直接上代码
阅读全文
摘要:一、必备理论基础 操作系统 并发编程是指在一台处理器上“同时”处理多个任务,为的是充分利用CPU的每一核,以达到最高的处理性能。 要想了解并发编程需要先了解操作系统,因为进程源自操作系统。进程是对正在进行程序的一个抽象,同时也是操作系统最核心的概念。 操作系统是一个协调、管理和控制计算机硬件资源和软
阅读全文
摘要:IO模型分为5种,分别是同步IO、异步IO、阻塞IO、非阻塞IO和信号驱动IO。信号驱动IO(signal driven IO)在实际中不常用,所以这里不做讨论。 一、阻塞IO(blocking IO) 在linux中,默认所有的socket都是blocking。我们一般使用的socket编程就是阻
阅读全文
摘要:一、协程介绍 协程就是基于单线程实现并发。CPU在运行一个任务的时候,有三种情况下会切换去执行其他任务,第一种是发生了阻塞, 另外一种是该任务计算时间过长,最终一种是有另外一个优先级更高的任务代替了它。 协程的优点: 缺点: 一个进程会有三种状态,阻塞、运行和就绪。就绪并不能提升效率,它是用来保存状
阅读全文
摘要:一、线程理论 1、进程是用来把资源集中到一起,而线程才是cpu上的执行单位。例如,一个个的火箭发射中心是进程,而火箭是线程。 2、多线程共享一个内存地址空间 3、线程开销比进程小、速度快、更容易创建撤销。线程的创建比进程要快10-100倍 4、计算密集型并不能获得性能上的增强,反倒由于不断切换速度不
阅读全文
摘要:一、multiprocessing和Process multiprocessing提供了支持子进程、通信和数据共享、执行不同形式的同步,提供了Process、Queue、Pipe、Lock等组件 创建进程的类: 参数介绍: 方法介绍: 属性介绍: 二、Process类的使用 注意:在windows中
阅读全文
摘要:一、什么是进程 进程:正在内存中运行的一道程序。 二、进程与程序的区别 程序指的是一堆代码,而进程指的是程序运行的过程。 通一个程序执行两次,就是两道进程。 三、并发与并行 并发:伪并行,看起来是同时运行,其实是CPU不断切换的结果。用单个CPU加多道技术就能实现。 并行:同时运行,CPU的一个核运
阅读全文
摘要:在做ftp作业的时候,需要做一个上传和下载的进度条,做的时候发现用\r很容易就能做出来 其中has是已经发送或接收的数据,total是总共有多少数据,\r的作用是: \r 默认将指针返回到最开始后输出(在原位置再次输出)。借助\r,可以让进度条在一行上不断更新,下面的例子更好的阐释了\r的工作原理:
阅读全文
摘要:一.面向对象编程 面向对象:核心是对象二字,对象就是特征与技能的结合体。优点:可扩展性强。缺点:编程复杂度高。应用场景:用户需求经常变化。比如互联网应用,游戏,企业内部应用。 类就是一系列对象相似的特征与技能的结合体。强调:站在不同的角度,得到的分类是不一样的。站在生物的角度,我们和花都是一类,站在
阅读全文
摘要:面向过程:核心是过程二字,过程指的是解决问题的步骤,设计一条流水线,机械式的思维方式。 优点:复杂的问题流程化,进而简单化。编程难度低。缺点:可扩展性差应用场景:功能一旦实现,扩展性很少的场景,比如系统监控、自动部署。
阅读全文
摘要:引子 请从以下文件里取出所有的手机号 用正则表达式 re.match 从头开始匹配(字符串的开头,就是只匹配第一个,第一个匹配不到就不往后匹配了) re.search 全局匹配,找到就返回 应用场景:找手机号或身份证号,第一个必须是数字 re.findall 把所有符合的匹配都找到并放到列表里 常用
阅读全文
摘要:很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug(), info(), warning(), error() and c
阅读全文
摘要:我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python2有os.system, 这条命令的实现原理是什么呢?(视频中讲,解释进程间通信的问题...) 除了
阅读全文
摘要:加密算法介绍 HASH Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能
阅读全文
摘要:此模块用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser。 解析下面的文件格式: 解析配置文件
阅读全文
摘要:xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml,至今很多传统公司如金融行业的很多系统的接口还主要是xml。 xml的格式如下,就是通过<>节点来区别数据结构的: xml协议在各个语言里的都
阅读全文
摘要:shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式 shelve对pickle进行了封装,允许你dump多次,并且顺序不会乱。所以,能用shevel就用shevel,不能用就用pickle,pickle不能用再用json。 序列化
阅读全文
摘要:什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes。 把字符转换成内存数据类型,叫反序列化。 为什么要序列化? 你打游戏过程中,打累了,停下来,关掉游戏、想过2天再玩,2天之后,游戏又从你上次停止的地方继续运行,你
阅读全文

浙公网安备 33010602011771号