断点续传

 
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. Struts2 一张图片引发的bug

    今天如常的打开项目开放.写了一会保存测试.在登录时出了个错误当不影响正常使用.丫的昨天还好好的.行下手上的工作 开始找bug 错误核心代码如下: 10:34:46,442  WARN OgnlValu ...

  2. Thread’s start method and run method

    工作中用到了Thread,一开始用错了,仔细研究了一下,稍作整理. 前言,今天写代码居然这样写的 new Thread() { @Override public void run() { System ...

  3. Hadoop-04-HBase全然分布式环境搭建

    Hbase分布式具体安装步骤 Hadoop全然分布式环境已经搭建完毕(參见01_Hadoop全然分布式环境搭建). 注意:Hbase和Hadoop的版本号必须相应! 不然会出现各种问题! 这里选用的是 ...

  4. vs2010 项目编译 ResGen.exe”已退出,代码为 -1073741701

    解决的办法如下: 1.关闭所有Visual Studio: 2.以管理员的身份打开命令提示窗口:(开始-运行-cmd) 3.更改目录至"CD C:\Program Files (x86)\M ...

  5. Foundation 框架 NSString常用总结

    iOS开发过程中,从始至终都会和NSString打交道,在此总结一下NSString的常用的方法,在以后的学习过程中用到的方法也会继续添加 NSString类是Foundation框架中得不可变字符串 ...

  6. LeetCode Coins in a Line

    There are n coins in a line. Two players take turns to take one or two coins from right side until t ...

  7. C语言:类似linux内核的分等级DEBUG宏(打印宏)

    总结几种log打印printf函数的宏定义 http://blog.chinaunix.net/uid-20564848-id-73402.html #include <stdio.h> ...

  8. C++数组与指针

    指向数组元素的指针 一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址.指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放到一个指针变量中) ...

  9. loaded some nib but the view outlet was not set

    链接地址:http://www.cnblogs.com/TivonStone/archive/2012/04/20/2460116.html 当使用 initWithNibName 函数, 并使用 由 ...

  10. LOJ 1341 Aladdin and the Flying Carpet(质因子分解)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1341 题意:给两个数a,b,求满足c * d = a且c>=b且d>=b的 ...