• python整理-day10


    1上节回顾

    Socket

    1、导入模块

    2、创建socket

    327发送的是字符串,但是3.5里面全部都是字节

    Send:我发送了多少(10字节=send('sadaqweqweqweqweqwe'),不一定全部发送完毕

    Sendall,其实就是调用send,但是做了一个while循环,一直调用send,把所有的消息全部发送完毕

    4、recv(2048) 上传文件,最多接收2048个字节

    粘包:ack

    Subprocess

    win:gbk编码的字节

    linux:utf-8编码的字节

    小知识

    作用域

    Python 中无块级作用域

    java和c#里面下面代码无法执行

    python和javascript可以执行

    有块级作用域只能在块里面用,无块级可以在块外面用

    python以函数为作用域的

    if 1==1:
        name="wzc"
    
    print(name)
    
    
    def func():
        name1="wzc"
    
    func()
    print(name1)
    

     结果

    wzc
    Traceback (most recent call last):
      File "/Users/wangzhichao/PycharmProjects/python_study/day10/1-1.py", line 11, in <module>
        print(name1)
    NameError: name 'name1' is not defined
    
    Process finished with exit code 1
    

    python作用域链,由内向外找,直到找不到报错

    对于作用域来说,在函数没有执行之前,作用域已经全部都确定了,作用域链已经全部都确定了

    由内向外一层一层

    name="www"
    
    def f1():
        print(name)
    
    def f2():
        name="wzc"
        return f1
    ret=f2()
    ret()
    

     结果:

    www
    
    Process finished with exit code 0
    

    Python27多继承,py3.5多继承

    2.7不继承object类,但是python3自动继承object类

    2.7

    默认不继承的是经典类

    继承的是新式类

    3.5

    全是新式类

    Socket server 源码

    支持并发处理socket

    IO多路复用

    概述

    select、poll、epoll

    select对个数有限制,1024个函数,内部通过for循环来实现,可以跨平台

    poll,没有个数显示,但是还是for循环,无法跨平台

    epoll是里面哪一个有变化,就会通知epoll。回调

     

    监听socket对象内部是否变化了?

    什么时候变化?连接或收发消息的时候

    服务器端的socket对象发生变化==》就是有新连接来了

    sk:有新连接来了

    conn:要收发消息了

    多线程、多进程、协称

    alex甄嬛西游传

    1、一个应用程序,可以有多进程多线程

    2、默认是单进程单线程

    3、单进程,多线程

    IO操作,不占用CPU

    多线程提高并发

    IO操作

    计算性操作

    多进程提高并发

    需要占用cpu,无法多线程,就需要利用多进程

    4、GIL 全局解释器锁 java和C#没有这个锁

     

    如何创建线程

    和线程相关的模块都在threading

    需要靠cpu自己的调度,来确认执行的时间

    Python2.7 里面,每个线程默认执行100条cpu指令

    Python3里面,这个线程执行多长时间,用时间来分片

    import time
    def f1(arg):
        time.sleep(3)
        print(arg)
    
    
    import threading
    t=threading.Thread(target=f1,args=(123,))
    t.setDaemon(True)
    t.start()
    t.join(2)
    
    
    print("end")
    print("end")
    print("end")
    print("end")
    print("end")
    print("end")
    print("end")
    

     结果:

    end
    end
    end
    end
    end
    end
    end
    
    Process finished with exit code 0
    

     

      

  • 相关阅读:
    (01)Docker简介
    Gym-101242B:Branch Assignment(最短路,四边形不等式优化DP)
    2019牛客暑期多校训练营(第三场)G: Removing Stones(启发式分治)
    POJ
    高维前缀和
    HDU
    BZOJ
    HDU
    POJ
    Gym-100648B: Hie with the Pie(状态DP)
  • 原文地址:https://www.cnblogs.com/wlzhc/p/5675143.html
Copyright © 2020-2023  润新知