socket--TCP/IP封装
2016-12-01 09:54:48 2 举报
AI智能生成
python
作者其他创作
大纲/内容
算法分析
socketserver
内部实现了多线程
最常见的 application
server
srv_sock = socket.socket()
srv_sock.bind(ip_port_tuple)
srv_sock.listen(5)
conn, addr = srv_sock.accept()
srv_sock.getsockname() 获取自己sock的名字
client
cli_sock = socket.socket()
cli_sock.connect(ip_port_tuple)
cli_sock.send(bytes)
cli_sock.recv(bytes)
常见问题
粘包问题
断电续传
完整验证 md5
作用域的问题
全局变量
全局可读
如果要写 加 globals 关键字 dict list 等除外
作用域链, 就近一致原则
块级作用域
python js 都没有块级作用于
python js 有函数级作用于
时间
作用于在函数执行之前就确定了
实现并发
IO多路复用
select
轮询 1024限制
poll
轮询 无限制
epoll
消息机制
多
多进程
相对独立的process
适合计算消耗型应用
常规使用
from multiporcessing import Process
进程池 自带
from multiprocessing imort Pool
pool.apply()
pool.apply_async()
pool.start()
pool.close() pool.terminate()
pool.join()
进程锁
Lock Rlock
锁代码块,同时仅允许一个process execute
semaphore
锁代码块,同时仅允许多个process execute
event
红绿灯
condition
代码块, 条件满足就允许多个 process execute
数据共享
from multiprocessing import queue
from multiprocessing imort Manager
多线程
部分资源共享,较小的开销
适合IO消耗型应用
常规使用
t = threading.Thread(target=func, args=( ,))
线程池
需要自己实现
线程锁
和进程锁一样
数据共享
本来就是共享的,直接使用即可
协程
专门处理io的,使用轮训的方式达到多线程的效果
自由主题
0 条评论
下一页