python2和3的区别丶网络编程以及socketserver多线程

时间:2022-03-30 00:01:30

一丶python2和python3的区别

  1.编码&字符串

    字符串:

      python2:

        Unicode    v = u"root"  本质上用unicode存储(万国码)

        (str/bytes)   v = "root" 本质用字节存储

      python3:

        str    v = "root"    本质上用unicode存储(万国码)

        bytes     v = b"root"    本质上用字节存储

    编码:

      python2:   ascii  文件头可以修改#-*-  encoding:utf-8 -*-

      python3:    utf-8  文件头可以修改#-*-  encoding:utf-8 -*-

  2.继承

    python2:   经典类/新式类

    python3:    新式类

  3.范围

    python2:     range/xrange

    python3:      range

  4.输入

    python2:  v1 = raw_input("请输入用户名")

    python3:  v2 = input("请输入用户名")

  5.打印

    python2:  print"XXX"

    python3:  print("XXX")

二丶网络编程

  1.mac

    mac地址是固定的存在于网卡上.每台电脑都不一样

  2.DHCP

    DHCP是一个局域网的网络协议,存在于路由器或交换机中,该协议可以自动的为我们分配IP

    有局域网,广域网,城域网

    ARP协议:ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

  3.DNS

    网络连接:

      域名解析:

        每一个域名后面都有其对应的IP地址,如:

          www.baidu.com  111.13.100.91

          www.qq.com    111.30.132.101

        连接时:

          sk = socket.socket()

          sk.connect(("111.13.100.91",8080))....

    问题来了,域名和IP的对应关系在哪里?

      本地:

        Win本地电脑:

          C:\Windows\System32\drivers\etc\hosts中

        Linux/Mac电脑:

          /etc/hosts中

    DNS服务器: 全球*的DNS服务器只有十三台

 

三丶socketserver和多线程

  socketserver

    对照图看源码:

python2和3的区别丶网络编程以及socketserver多线程

    执行serve_forever的相关代码:

python2和3的区别丶网络编程以及socketserver多线程

 

python2和3的区别丶网络编程以及socketserver多线程

   2.多线程

    在多线程的操作系统中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。

import time
import threading

def task(a1,a2,a3):
    time.sleep(3)
    print('拿快递')

def play():
    print('和女朋友去耍')

def wm():
    print('去拿外卖')

# 创建一个线程
# 让该线程去执行任务:函数
t1 = threading.Thread(target=task,args=(1,2,3,))
# 去执行吧
t1.start()


# 创建一个线程
# 让该线程去执行任务:函数
t2 = threading.Thread(target=play)
# 去执行吧
t2.start()

# 创建一个线程
# 让该线程去执行任务:函数
t3 = threading.Thread(target=wm)
# 去执行吧
t3.start()

print('玩扇子')
print('煽风点火')
print('耍贱...')

  线程好比一个人同时做多件事,就跟孙悟空一样,来一个需求,就把根毛变成自己去做那件事了,再来一个需求就再拔一根变成自己去做,之间互不干扰.有了多线程我们服务器就可以为多个用户同时服务了

示例:我么可以模拟很多人给服务器请求,让服务器去执行,每个请求10秒后完成.代码如下

import time
import threading


def task(n):
    print('开始执行任务:',n)
    time.sleep(10)
    print('...')
    print('任务%s 执行完毕:'%n)

while True:
    name = input("请输入任务:")
    t = threading.Thread(target=task,args=(name,))
    t.start()

 

python2和3的区别丶网络编程以及socketserver多线程

多个任务同时进行,并且互不干扰