断点续传

 
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. class类的sizeof计算

    class no_virtual { public: void fun1() const{} int fun2() const { return a; } private: int a; } clas ...

  2. Java图形化界面设计——布局管理器之null布局(空布局)

    一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局. 操作方法: 1)       首先利用setLayout(null)语句将容器的布局设置为null布局(空布局 ...

  3. ZOJ 1698 (最大流入门)

    Power NetworkTime Limit:5000MS    Memory Limit:32768KB    64bit IO Format:%lld & %llu SubmitStat ...

  4. Spoj 2713 Can you answer these queries IV 水线段树

    题目链接:点击打开链接 题意: 给定n长的序列 以下2个操作 0 x y 给[x,y]区间每一个数都 sqrt 1 x y 问[x, y] 区间和 #include <stdio.h> # ...

  5. HDU 1976 prime path

    题意:给你2个数n m.从n变成m最少须要改变多少次. 当中: 1.n  m  都是4位数 2.每次仅仅能改变n的一个位数(个位.十位.百位.千位),且每次改变后后的新数为素数 思路:搜索的变形题,这 ...

  6. UIView 中 frame, bounds, center 属性的关系

    最近一直在学 iOS 开发,所以专门创建了这样一个类别,将自己学习中的一些问题整理,记录下来.由于自己是初学者,所以所写的文章非常基础,写这个类别一是为了给自己留下存 档,二是为了给和我有同样问题的初 ...

  7. CSS文字样式

    font-family:通常文章的正文使用的是易读性较强的serif字体,用户长时间阅读下不easy疲劳.而标题和表格则採用较醒目的sans-serif字体.Web设计及浏览器设置中也推荐遵循此原则. ...

  8. DEV GridControl 小结(持续添加)

    一.属性: 1.Views OptionsBehavior=>Editable:False  列表不可编辑 OptionsSelection=>EnableAppearanceFocuse ...

  9. Unable to locate appropriate constructor on class异常

    一般出现Unable to locate appropriate constructor on class这个异常,都是实体类的带参数的构造方法和使用查询语句出现偏差,两个地方的代码如下: 一般都是第 ...

  10. Hadoop学习笔记(4)hadoop集群模式安装

    具体的过程参见伪分布模式的安装,集群模式的安装和伪分布模式的安装基本一样,只有细微的差别,写在下面: 修改masers和slavers文件: 在hadoop/conf文件夹中的配置文件中有两个文件ma ...