python 高级篇散记

  • PEP 8 代码规范

  • python高级编程技巧

    • 深入类和对象
    • 类与对象深度问题及解决技巧
    • python垃圾回收及性能分析
    • python元类及迭代器生成器
  • socket编程

    • UDP 发送与接收数据
    • TCP 发送与接收数据
  • 多任务

    • 线程
    • 线程与进程
    • 进程、GIL全局解释器锁
    • 协程

    • 关闭动态绑定属性 __slots__

    了解计算机

    • 进程调度/时间片轮转/多级反馈队列
    • 并发 并行
    • 同步 异步
    • 阻塞 非阻塞

    线程、进程、协程

    • threading.Thread
    • multiprocessing.Process

线程是操作系统能够进行运算调度的最小单位。它包含在进程之中,是进程中的实际运行单位。
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,并且进程是线程的容器。程序是包含数据及其组织形式的描述,进程是一个执行中的程序。
进程是一个实体,每一个进程都有他自己的地址空间。一般情况下,包括文本区域,数据区域和堆栈。

- daemon=True 守护线程
- t.start()
- 使用threading.Condition()完成线程同步
   - condition
   - wait
   - notify
- 互斥锁 mutex
   - lock
   - aquire
   - release
  • 垃圾回收 import dis
  • pycharm中python程序设置:allow parallel run.

GIL 全局解释器锁
GIL并不是python的特征,python完全不依赖于GIL。在cpython解释器中,同一个进程下开启的多线程。同一时刻只能有一个线程执行,无法利用多核优势。GIL本质上就是一把互斥锁。将并发运行变成串行,以此来控制同一时间共享数据只能被一个任务修改,进而保证数据安全。

协程

  • yield 实现多任务
  • greenlet 实现协程(手动切换)
  • gevent 实现协程(遇到延迟切换)
可发自己的静态web服务器
  • 编写TCP服务器端程序
  • 获取浏览器发送的HTTP请求报文数据
    cmd 命令:python -m http.server 端口号
  • 读取(固定)页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。
  • HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。
    web浏览器#### 需求1:实现多任务文件夹复制
  • 获取用户要复制的文件夹名字;
  • 创建一个新的文件夹
  • 获取文件夹中所有待拷贝的文件名称
  • 创建进程池
  • 添加拷贝任务
  • 进度条
    进程之间的进程通信 multiprocessing.Queue
    进程池中的进程通信 multiprocessing.Manager().Queue()
    12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值