断点续传

 
python2.7 多继承  py35多继承
 
socketserver源码
    支持并发处理socket
 
i/o多路复用
 

上节回顾
    socket 
        1.导入模块
        2.创建socket
        3. send      不一定全部发送完成    会有个返回值:发送多少字节
            sendall  内部调用send   会把数据全部发送完成
    粘包:ack
    socketserver
        1.自定义类
        2.必须继承某个类
        3.重写handle方法
        4.调用socketserver构建对象
        5.forever运行

上节作业:
    断点续传:
        文件:
            a,追加  续传
            w,清空  重新上传
        文件指针:
            seek(num)
        文件名存在:以前上传过  服务端以a模式打开此文件
        获取字节大小num发给客户端
        客户端用seek(num)跳到续传点再发送
 

小知识点:
    作用域:python中无块级作用域
                        java/c#    有块级作用域
                        python/js   无块级作用域
                 if  1 == 1:
                     name="alex"
                 print(name)
                输出:alex
            python中是以“函数”为作用域的
作用域是由内往外的
在函数未执行前作用域已全部确定啦,作用域链已经生成
name="alex"
def f1():
print(name) def f2():
name="aric"
f1()
f2()

alex

name="alex"
def f1():
print(name) def f2():
name="aric"
return f1
ret=f2()
ret()

alex

解析:f1的作用域是自己函数内和全局
          f2的作用域是自己函数内和全局
          所以执行f1的时候先在函数f1里找,没有的话就找全局变量

新浪面试题:
li=[lambda :x for x in range(10)]
print(li[0]())

解析:先看下的例子:

li=[x for x in range(10)]
print(li)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
li:列表
for前面(x)是列表中的元素,x的取值是for循环取值的
再看前面的面试题:
li的元素是lambda :x,就是一个一个的函数,函数在调用之前是不执行的,所以在li[0]()之前lambda :x是不执行的,但是for x in range(10)一直在执行,最后值是9,li[0]()时lambda :x执行,:后面是lambda函数的返回值,这时的x是9,所以
print(li[0]())

执行结果是9

其实这个面试题就是下面的程序:
li=[]
for x in range(10):
def f1():
return x
li.append(f1)
print(li[0]())
print(li[1]())

9

9

多继承:
3:从左往右,深度优先,最后找祖宗       默认所有类都继承object类
2:从左往右,深度优先,一条道走到黑,如果继承object类的话就同3啦
在2中 不继承object类的话叫经典类
          继承object类的话新式类,3中的类全是新式类
 

多路复用:
中间的圈是多路复用,可看做是大堂经理
IO多路复用:监听socket对象内部是否变化
中间看视频
 
select方式是通过for循环来实现的,所以效率低,但是跨平台,还有个缺点是有限制?
poll方式是通过for循环来实现的,没有限制
epoll方式是通过socket对象有变化的话自己告诉epoll的方式实现的  nginx用的是epoll
 
IO多路复用不只是针对socket操作的,支持所有的IO操作
 

socketserver源码
 

多线程,多进程
1. 一个应用程序可以有多进程,多线程,默认是单进程,单线程
2.单进程,多线程
    py多线程:IO操作          不占用cpu    能提高并发 
                    计算性操作     占用cpu        不能提高并发(GIL)  所以要用多进程
3.GIL 全局解释器锁

python成长之路10的更多相关文章

  1. python成长之路10——socketserver源码分析

    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) 参数一:地址簇 socket.AF_INET ipv4(默认) socket.AF_INE ...

  2. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  3. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  4. 【Python成长之路】装逼的一行代码:快速共享文件

    [Python成长之路]装逼的一行代码:快速共享文件 2019-10-26 15:30:05 华为云 阅读数 335 文章标签: Python编程编程语言程序员Python开发 更多 分类专栏: 技术 ...

  5. python成长之路第三篇(1)_初识函数

    目录: 函数 为什么要使用函数 什么是函数 函数的返回值 文档化函数 函数传参数 文件操作(二) 1.文件操作的步骤 2.文件的内置方法 函数: 一.为什么要使用函数 在日常写代码中,我们会发现有很多 ...

  6. 我的Python成长之路---第一天---Python基础(1)---2015年12月26日(雾霾)

    2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算 ...

  7. linux小白成长之路10————SpringBoot项目部署进阶

    [内容指引] war包部署: jar包部署: 基于Docker云部署. 一.war包部署 通过"云开发"平台初始化的SpringBoot项目默认采用jar形式打包,这也是我们推荐的 ...

  8. 我的Python成长之路---第三天---Python基础(10)---2016年1月16日(雾霾)

    二.collections collections是对Python现有的数据类型的补充,在使用collections中的对象要先导入import collections模块 1.Counter——计数 ...

  9. 我的Python分析成长之路10

    matplot数据可视化基础 制作提供信息的可视化(有时称作绘图)是数据分析中最重要任务之一. 1.图片(画布)与子图 plt.figure :创建一张空白的图片,可以指定图片的大小.像素. figu ...

随机推荐

  1. linux下解压iso文件

    .iso文件的格式是iso9660,iso9660是cd上的一种文件系统, 也就是说是 是数据在cd上的组织形式: 它的一些限制是: 1.最多8级子目录(可以用RockRidge Extension增 ...

  2. 模式匹配-KMP算法

    /***字符串匹配算法***/ #include<cstring> #include<iostream> using namespace std; #define OK 1 # ...

  3. CF#52 C Circular RMQ (线段树区间更新)

    Description You are given circular array a0, a1, ..., an - 1. There are two types of operations with ...

  4. 笔记-Nodejs中的核心API之Events

    最近正在学习Node,在图书馆借了基本关于Node的书,同时在网上查阅资料,颇有收获,但是整体感觉对Node的理解还是停留在一个很模棱两可的状态.比如Node中的模块,平时练习就接触到那么几个,其他的 ...

  5. AOP annotation

    1.xml文件 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http ...

  6. JavaSE学习总结第27天_反射 & 设计模式 & JDK5、7、8新特性

      27.01  反射_类的加载概述和加载时机 类的加载:当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载:就是指将class文件读 ...

  7. mysql查询数据库中包含某字段(列名)的所有表

    SELECT TABLE_NAME '表名',TABLE_SCHEMA '数据库名',ORDINAL_POSITION '顺序',COLUMN_NAME '字段',DATA_TYPE '类型' ,CH ...

  8. 原生js实现的轮播图,易用+可多用

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. 帝国cms7.2灵动标签万能教程

    学完本文,就完全能掌握帝国模板开发制作啦!这里只介绍sql语句调用方法(方便,快捷!) 灵动标签语法: [e:loop={,24,0}] 模板内容 [/e:loop] 详细解释:黄色部分:条件语句,即 ...

  10. 实战Windows 7的Windows Media Center

    简介 本文讲述如何通过Windows 7的Windows Media Center搭建强劲的综合娱乐电视系统,同时讲述Windows Media Center的实际使用感受,以及如何通过Windows ...