摘要: GIL全局解释器锁 GIL本质就是一把互斥锁,和所有互斥锁本质一样,都是把并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务修改,进而保证数据安全 保护不同的数据的安全,就应该加不同的锁。例如 IO模式下的就应该用多线程 (打开文件,time.sleep,输入输出等等),而计算相关的就是用 阅读全文
posted @ 2018-09-07 20:22 大张哥 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 什么是线程 进程其实是一个资源单位,而进程内的线程才是cpu上的执行单位 线程其实指的就是代码的执行过程 为何要用线程 线程vs进程 同一进程下的多个线程共享该进程内的资源 创建线程的开销要远远小于进程 开启线程的两种方式: 方式一: 方式二: 线程特性: 在该进程内 所有线程是共享资源的 所以打印 阅读全文
posted @ 2018-09-06 21:06 大张哥 阅读(143) 评论(0) 推荐(0) 编辑
摘要: IPC 机制有两种 一个是管道 一个是队列(队列=管道+锁) 管道用来实现两个进程连接进行通信 subprocess.Popen('tasklist',shell=True,) 就相当于 p=Process(target=tasklist) 只是发送一个信号出去 就是开一个子进程 主进程要想拿到子进 阅读全文
posted @ 2018-09-06 20:18 大张哥 阅读(443) 评论(0) 推荐(0) 编辑
摘要: join方法 :先让子进程运行 进程之间内存空间的相互隔离 进程之间的内存是一种物理隔离的状态,相互之间的数据是无法共享的 进程对象其他相关的属性或方法 getpid 是获取id getppid就是获取父进程的id 当前的获取的是 pycharm的进程id 僵尸进程与孤儿进程 僵尸进程是有害的,一个 阅读全文
posted @ 2018-09-05 20:00 大张哥 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 基于UDP通信的套接字 udp不存在粘包问题 是 一对一 对应的传值 并不存在粘包情况 基于 UDP 通信的套接字并不会和TCP 一样存在一个客户端与服务端连接了 必须等待第一个链接的客户端断开才能让第二个客户端链接的情况 它可以多个用户同时的发送消息给服务端但是 UDP 并不能安全的传输 而且传输 阅读全文
posted @ 2018-09-04 20:34 大张哥 阅读(966) 评论(0) 推荐(0) 编辑
摘要: 基于tcp通信的套接字必须先启动服务器再去启动客户端去链接服务器 客户端 服务端 这只是基于tcp通信的一个简单的套接字 只能进行一次的通信 服务端 客户端 这是能多次通信的套接字 在阻塞前添加一个循环就能实现一个链接循环 服务端 客户端 这是模拟ssh实现远程执行命令 粘包问题 二、两种情况下会发 阅读全文
posted @ 2018-09-03 22:00 大张哥 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 套接字 AF_UNIX 基于本地的 AF_INET 基于网络的 套接字的一个服务端与客户端的代码 Client.py 阅读全文
posted @ 2018-08-29 21:10 大张哥 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 单例模式 就是把多次实例化的结果指向同一个实例,实例化传的值得是相同 今天单例模式总共讲了四个实现方式: 方式一: 服务端需要遵循的原则: 1.服务端与客户端都需要有卫衣的地址,但是服务端的地址编写固定/绑定 2.对外一直提供服务,稳定运行 3.服务端应该支持并发 互联网协议: OSI七层协议 ip 阅读全文
posted @ 2018-08-28 20:26 大张哥 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 什么是异常处理: 异常就是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常没有被应用程序处理,那么该异常就会抛出来,程序的执行也就随之终止 异常包含三个部分: 1.traceback异常的追踪信息 2.异常的类型 3.异常的信息 错误分为两大类: 1.语法上的错误:在程序运行前就应该立即修正 阅读全文
posted @ 2018-08-27 21:32 大张哥 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 反射:hasattr , getattr , setattr , delattr hasattr判断实例化的对象里面是否有这个值 class Peopel: def __init__(self,name,age): self.name=name self.age=age obj=Peopel('la 阅读全文
posted @ 2018-08-23 21:21 大张哥 阅读(95) 评论(0) 推荐(0) 编辑