py2/py3区别, 列表生成式, 网络编程, socketserver, 线程, uuid模块

一. py2/py3区别
    - 编码&字符串
        字符串:
            py2:
                unicode         v = u"root"    本质上用unicode存储(万国码)
                (str/bytes)     v = "root"     本质用字节存储
            py3:
                str                v = "root"     本质上用unicode存储(万国码)
                bytes           v = b"root"    本质上用字节存储
        编码:
            py2:
                - ascii
                文件头可以修改:#-*- encoding:utf-8 -*-
            py3:
                - utf-8
                文件头可以修改:#-*- encoding:utf-8 -*-

注意:文件是如何存储?
    - 继承
        py2: 经典类/新式类
        py3: 新式类
    - 范围
        py2:range/xrange
        py3:       range
    - 输入
        py2: v1 = raw_input(‘请输入用户名:‘)
        py3: v2 = input(‘请输入用户名:‘)
    - 打印
        py2: print ‘xx‘
        py3: print(123)

二. 列表生成式
v = [lambda x: x + i for i in range(10)]
print(v)   # 10个内存地址组成的列表

三. 网络编程

1. 我的电脑有网卡,网卡里有mac地址

2. 我到某个地方插上网线,路由器或交换机中的DHCP服务为我自动分配IP地址。
        IP: 192.168.13.84
             IPv4
                00000000.00000000.00000000.00000000
                0~255    0~255    0~255    0~255
             IPv6
                00000000.00000000.00000000.00000000.00000000.00000000
        子网掩码:255.255.255.0
            192.168.13.84
            255.255.255.0   # 也可以是255.255.254.0

192.168.12.84
            255.255.255.0
            将挡住的IP位数作为网段。
            未挡住的部分作为可变的值。

网关IP:192.168.13.1

局域网内、城域网、广域网:
            广播
            单播
            广播风暴
            arp协议

DNS
        网络连接:
            - 域名解析
                www.bitfinex.com  127.91.64.33
            - 连接
                sk = socket.socket()
                sk.connect((‘47.95.64.113‘,80))
                ...
        问题来了,域名和IP的对应关系在哪里?
            本地:
                Win本地电脑:
                    C:\Windows\System32\drivers\etc\hosts
                        11.11.11.11 bitifnex.com
                Linux/Mac电脑:
                    /etc/hosts

DNS服务器:全球顶级DNS服务器13台
                www.bitfinex.com  127.91.64.33

创业:
            a. 租一个服务器+公网IP
            b. 租域名
                域名+IP解析

四. socketserver

注意:如果想要提高效率可以使用多线程。

    """
    pip3 install requests   # 需要安装
    """
    import threading
    import requests
    import uuid

    url_list = [
        ‘https://www3.autoimg.cn/newsdfs/g28/M05/F9/98/120x90_0_autohomecar__ChsEnluQmUmARAhAAAFES6mpmTM281.jpg‘,
        ‘https://www2.autoimg.cn/newsdfs/g28/M09/FC/06/120x90_0_autohomecar__ChcCR1uQlD6AT4P3AAGRMJX7834274.jpg‘,
        ‘https://www2.autoimg.cn/newsdfs/g3/M00/C6/A9/120x90_0_autohomecar__ChsEkVuPsdqAQz3zAAEYvWuAspI061.jpg‘,
    ]

    def task(url):
        """
        1. DNS解析,根据域名解析出IP
        2. 创建socket客户端    sk = socket.socket()
        3. 向服务端发起连接请求 sk.connect()
        4. 发送数据(我要图片) sk.send(...)
        5. 接收数据            sk.recv(8096)
        接收到数据后写入文件。
        """
        ret = requests.get(url)
        file_name = str(uuid.uuid4()) + ‘.jpg‘
        with open(file_name, mode=‘wb‘) as f:
            f.write(ret.content)

    for url in url_list:

        t = threading.Thread(target=task,args=(url,))
        t.start()

五. 线程

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()

六. uuid模块

import uuid
v = str(uuid.uuid4())
print(v)

原文地址:https://www.cnblogs.com/NachoLau/p/9601139.html

时间: 2024-08-05 01:00:18

py2/py3区别, 列表生成式, 网络编程, socketserver, 线程, uuid模块的相关文章

python网络编程基础(线程与进程、并行与并发、同步与异步)

python网络编程基础(线程与进程.并行与并发.同步与异步) 目录 线程与进程 并行与并发 同步与异步 线程与进程 进程 前言 进程的出现是为了更好的利用CPU资源使到并发成为可能. 假设有两个任务A和B,当A遇到IO操作,CPU默默的等待任务A读取完操作再去执行任务B,这样无疑是对CPU资源的极大的浪费.聪明的老大们就在想若在任务A读取数据时,让任务B执行,当任务A读取完数据后,再切换到任务A执行.注意关键字切换,自然是切换,那么这就涉及到了状态的保存,状态的恢复,加上任务A与任务B所需要的

Python2与Python3的区别/网络编程/socketserver模块中的多线程

一.知识点补充: 1.解释型语言和编译型语言 编译型(目前有两种解释): 先把代码编译成机器码 -> 机器寄存器去运行 :C语言 先把代码编译成XXX -> 计算机找虚拟机执行代码 -> 机器码交给计算机去执行 :C语言,JAVA,C# 解释型: 边解释边执行 2.Python中的作用域 Python中的函数是一个作用域 3.这里规定一下以后写元组的格式: v = (1,2,3,) 1.Python中函数是一个作用域 i=0 for i in range(10): pass print(

《网络编程》线程

线程基本函数 当一个程序被启动时,只有一个主线程,若要实现对其他线程的基本操作,首先必须创建新的线程,新的线程创建可以使用 pthread_create 函数实现,该函数的 API 定义如下: /* 函数功能:创建新的线程: * 返回值:若成功则返回0,若出错则返回正的错误码: * 函数原型: */ #include <pthread.h> int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void*(*func)(v

服务器端网络编程之线程模型

上一篇文章<服务器端网络编程之 IO 模型>中讲到服务器端高性能网络编程的核心在于架构,而架构的核心在于进程-线程模型的选择.本文将主要介绍传统的和目前流行的进程-线程模型,在讲进程-线程程模型之前需要先介绍一种设计模式: Reactor 模式,不明白的看这里<设计模式详解>,文中有一句话对 Reactor 模式总结的很好,引用下. Reactor 模式首先是事件驱动的,有一个或多个并发输入源,有一个Service Handler,有多个Request Handlers:这个Ser

38 - 网络编程-socketserver

目录 1 socket编程弊端 2 SocketServer模块 2.1 服务器类 2.2 Mixin类 2.3 RequestHandlerClass是啥 2.4 编程接口 3 实现EchoServer 4 聊天室 1 socket编程弊端 socket编程过于底层,编程虽然有套路,但是要写出健壮的代码还是比较困难的,所以很多语言都会socket底层API进行封装,Python的封装就是SocketServer模块.它是网络服务编程框架,便于企业级快速开发. 2 SocketServer模块

【python】网络编程-SocketServer 实现客户端与服务器间非阻塞通信

利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信.首先,先了解下SocketServer模块中可供使用的类:BaseServer:包含服务器的核心功能与混合(mix-in)类挂钩:这个类只用于派生,所以不会生成这个类的实例:可以考虑使用TCPServer和UDPServer.TCPServer/UDPServer:基本的网络同步TCP/UDP服务器.UnixStreamServer/ UnixDatagramServer:基本的基于文件同步TCP/UDP服务器.Fork

python网络编程-----&gt; socketserver实现并发

1.socketserver的作用: 基于tcp的套接字,关键就是两个循环,一个链接循环,一个通信循环 socketserver模块中分两大类:server类(解决链接问题)和request类(解决通信问题) 2.代码实现: 服务端: import socketserver class MyTcphandler(socketserver.BaseRequestHandler): def handle(self): while True: #通信循环 data=self.request.recv(

Pyhon网络编程-socketserver

一: 用法 import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): # 业务逻辑 server = socketserver.ThreadingTCPServer(('127.0.0.1',8088),MyServer) server.serve_forever() 原文地址:https://www.cnblogs.com/wc89/p/11030140.html

八. 网络编程( socketserver 模块 初级使用)

一 .socketserver 模块初级使用 ThreadingTCPServer ocketserver是标准库中的一个高级模块 socketserver可以简化创建客户端跟创建服务端的代码 socketserver 可以用于 TCP 协议 应用场景 应为tcp是一个长连接 只能保持一个人通话 但是socketserver就解决了同时多个客户端来 通话 初始化控制器类Handler[Handler是一个继承BaseRequestHandler的类Handler中的handle方法决定了每一个连