随笔分类 - Python
摘要:GIL是用来锁线程的,保证了数据的安全,那么有了GIL为什么还要用锁呢?因为有了GIL还是会出现数据不安全的现象,所以还要用锁 先看以下代码 import time from threading import Thread,Lock n = 100 def func(): global n # n
阅读全文
摘要:全局解释器锁:每个线程在执行的时候都需要先获取GIL,保证同一时刻只有一个线程可以执行代码,即同一时刻只有有个线程使用CPU,也就是说多线程并不是真正意义上的同时执行 如何解决GIL锁的问题: 1.更换Cpython解释器,换成Jpython或pypy(不建议) 2.使用多进程完成多线程的任务 3.
阅读全文
摘要:线程是计算机中被CPU调度的最小单位 线程:轻量级的进程/轻型进程,线程本身创建出来就是为了解决并发问题的,并且他的整体效率比进程要高,但是线程实际上也有一些性能上的限制,管理调度开销 如果你的程序需要数据隔离:多进程,如果你的程序对并发的要求非常高:多线程 python线程模块的选择 Python
阅读全文
摘要:什么是进程 什么是进程 进程是计算机中的程序关于某数据集合一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,进程与进程之间数据隔离,执行过程异步 为什么会出现进程的概念 合理利用cpu,提高客户体验,多个进程是可以利用多个cpu的,可以实现并行的效果 进程的特征 进程与程序的区
阅读全文
摘要:基于TCP协议的socket tcp是基于链接的,必须先启动服务端,让后在启动客户端去链接服务端 server端 clinet端 基于UDP协议的socket udp是无连接的,启动服务之后可以直接接受信息,不需要提前建立链接 sercer:端 client端
阅读全文
摘要:hashlib 加密是不可逆的,对于同一个字符串,同一种算法,计算的结果永远是相同的,对于不同的字符串,计算的结果总是不同的 会把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示) 计算一个字符串的MD5值 如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的
阅读全文
摘要:基础概念 静态属性\私有属性 概念 __dict__ 操作属性的值 对象之间的交互 一个类中可以没有__init__ 对象的命名空间和类的命名空间之间的关系 对象可以查看类的静态属性,但是不能修改,并且一旦修改,就不能取到类当中的内容了(除非手动删除这个修改的属性),所有的静态属性的修改,都应该由类
阅读全文
摘要:isinstance和issubclass 检测的是对象是不是某个类以及其父类的对象 检测的一个类是否是另一个类的子类
阅读全文
摘要:1.什么是反射 现有一个字符串,你希望能够将这个字符串转成变量名,这个变量名可以是(类名\函数名\变量名\方法名\对象名), 反射: 某个命名空间中的某个"变量名",获取这个变量名对应的值 反射类中的属性 反射类中的方法 a.b 类型类名.静态属性/类名.类方法/类名.静态方法list对象.对象属性
阅读全文
摘要:@classmethod 在上面代码中,__add_count 方法和show_count方法并没有使用self参数,但是我们给它传了,正常情况下,如果参数不被使用,我们不应该传入改参数,因此这个方法中的self参数是一个完全无用的参数,我们可以直接删除,删除后的报错也只是Pycharm上的语法报错
阅读全文
摘要:pythion2与python3 的区别 整数 3.14,如何去掉小数位?
阅读全文
摘要:模块 导入模块 时间格式 格式化时间字符串 %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00
阅读全文
摘要:写一个函数完成三次登陆功能:用户的用户名密码从一个文件register中取出。register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行。完成三次验证,三次验证不成功则登录失败,登录失败返回False。登陆成功返回True。 def login(): count
阅读全文
摘要:迭代器相关内置函数 字符串类型代码的执行 eval() 执行字符串类型的代码,并返回最终结果 n = eval('2+8') print(n) 结果: 10 n1 = 4 print(eval('n1+10')) 结果: 14 exec() 执行字符串类型的代码,没有返回结果 n = exec('2
阅读全文
摘要:variable = [out_exp_res for out_exp in input_list if out_exp == 2] out_exp_res: 列表生成元素表达式,可以是有返回值的函数。 for out_exp in input_list: 迭代input_list将out_exp传
阅读全文
摘要:迭代器 容器类型:list / tuple / dict /set 容器类型取值方法 例:列表 #列表 #第一种方法:利用索引 l = [1,2,3,4] print(l[0]) # 利用索引 print(l[:2])# 所有切片都相当于把一段内容取出来放在一个新列表中 print(l[:]) #
阅读全文
摘要:函数的定义 def func(): print(1) print(2) print(3) return print(4) func() 结果: 1 2 3 4 定义:def 关键字开头,空格之后接函数名和圆括号(),最后为冒号:,def 是固定的不能改变,空格将def关键字和函数名分开,函数名的命名
阅读全文
摘要:文件操作 使用Python来读写文件是非常简单的操作,使用open()函数来打开一个文件,获取到一个文件句柄,然后通过文件句柄就可以进行各种格样的操作了 打开文件方式: 默认使用的是r(只读模式) 只读操作(r/rb) f = open("护士少妇萝莉",mode="r",encoding="utf
阅读全文
摘要:明确:对字符串的操作方法都不会改变原来字符串的值 1,去掉空格和特殊符号 name.strip() 去掉空格和换行符 name.strip('xx') 去掉某个字符串 name.lstrip() 去掉左边的空格和换行符 name.rstrip() 去掉右边的空格和换行符 2,字符串的搜索和替换 na
阅读全文
摘要:总结:# split 分割 ********# strip 脱 默认脱头尾的空格 ********# replace 替换 ********# join 插入 拼接 ********# format % f ******# upper 全部大写 ******# lower 全部小写 ******#
阅读全文