python基础学习8-网络协议、进程与线程
- UDP协议 用户数据包协议
- socket
- bind()
- sendall()
- recvfrom()
- sendto()
- close()
- TCP服务器端流程:
- 使用socket类创建一个套接字对象
- 使用bind((ip,port))方法绑定ip地址和端口号
- 使用listen()方法开始TCP监听
- 使用accept()方法等待客户端的连接
- 使用recv()/send()方法接受发送数据
- 使用close()关闭套链接
- 进程:程序运行后,系统为程序分配的内存空间
- Process(group=None,target,name,args,kwargs)
- group 表分组,实际不使用,值默认为None即可
- target 子进程要执行的任务,支持函数名
- name 子进程名称
- args 调用函数的位置参数,以元组的形式进行传递
- kwargs 表示调用函数的关键字参数,以字典的形式进行传递
- class 子进程(Process):
pass
- 方法属性
- name 当前进程实例的别名默认为Process-N
- pid 当前进程对象的PID值
- is_alive 判断进程是否执行完,没执行完为True,执行完为False
- join(timeout) 等待结束,或者等待timeout秒
- start() 启动进程
- run() 如果没有指定的target参数,则启动进程以后,会调用父类中的run方法
- terminate() 强制终止进程
- 进程池 进程池对象 = Pool(N)
- apply_async(func,args,kwargs) 使用非阻塞方式调用函数
- apply(func,args,kwargs) 使用阻塞方式调用函数
- close() 关闭进程池,不再接受新任务
- terminate() 不管任务完成否,立即关闭进程池
- join() 阻塞主进程,必须在terninate(和close()之后使用
- 进程之间数据不共享,通过队列解决,先进先出
- queue.qsize()
- queue.empty()
- queue.full()
- queue.get(blovk=true)
- queue.get_nowait()
- queue.out(item,block=true)
- queue.put_nowait(item)
- 函数式创建线程,线程之间可以共享数据
- 函数式 t= Thread(group,target,name,args,kwargs)
- 继承式
- 线程共享数据带来的安全问题-锁
- acquire()
- release()