您的位置:首页 > 编程语言 > Python开发

python知识点十八、TCP协议的三次握手四次挥手和网络七层协议以及线程和进程和锁的总结

2019-08-07 20:38 417 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_40558166/article/details/98783118

一、线程

线程是CPU调度的最小单位
1.导线程的包:
①import threading ② form threading import Thread
2.创建线程的方法
①t1=threading.Thread(target=函数名,args=(函数的参数1,函数的参数2…))
②t2=Thread(target=函数名,args=(函数的参数1,函数的参数2…))
3.启动线程的方法
t1.start( )
4.查看线程id的方法
①导入os模块,使用os.getpid()查看子线程id
②导入os模块,使用os.getppid()查看父线程id
5.主动执行某线程,其他线程等待
join()方法可以使其他线程等待该线程执行完再继续其他线程
6.线程的通信----队列
6.1队列的导包方式
①import queue
②from queue import Queue

6.2相关方法
创建队列 q=Queue(3) 数字代表最大队列数据储存长度,不写不限
队列添加 q.put(),若函数里有block=False则堵塞会报错,不写满数后会等待
队列取数 q.get(),若函数里有block=False则堵塞会报错,不写空数后会等待
队列查空 q.empty(),空返回True
队列查满 q.full(),满返回True
队列数据长度 q.qsize(),返回已存入的数据个数

二、进程

进程是资源分配的最小单位
1.导进程包
①import multiprocessing
②from multiprocessing import Process
2.创建线程的方法
①t1=multiprocessing.Process(ttarget=函数名,args=(函数的参数1,函数的参数2…))
②t2=Process(target=函数名,args=(函数的参数1,函数的参数2…))
3.启动线程的方法
t1.start()
4.查看进程id的方法
①导入os模块,使用os.getpid()查看子进程id
②导入os模块,使用os.getppid()查看父进程id
5.主动执行某线程,其他线程等
join()方法可以使其他线程等待该进程执行完再继续其他进程
6.进程的通信----队列
6.1队列的导包方式
①import multiprocessing
②from multiprocessing import Queue
6.2相关方法
创建队列 q=Queue(3) 数字代表最大队列数据储存长度,不写不限
队列添加 q.put(),若函数里有block=False则堵塞会报错,不写满数后会等待
队列取数 q.get(),若函数里有block=False则堵塞会报错,不写空数后会等待
队列查空 q.empty(),空返回True
队列查满 q.full(),满返回True
队列数据长度 q.qsize(),返回已存入的数据个数

三、线程的互斥锁

1.导包方式
①import threading
②from threading import Lock
2.创建方式
l=LOCK()
3.上锁方式
l.acquire()
4.解锁方式
l.release()
5.锁的好处
①确保某关键代码只有一个线程从头到尾完整进行
6.锁的坏处
①可能造成死锁
②组织多线程并非,是效率大大降低

四、网络七层协议

从上至下:
1.应用层:HTTP,FTP,DNS,TFTP…
2.表示层:数据加密
3.会话层:SQL,RPC
4.传输层:TCP,UDP
5.网络层:IP,IPX
6.数据链路层:ATM
7.物理层:电路

五、三次握手和四次挥手
1.三次握手

2.四次挥手


转载:详细的三次握手四次挥手文章

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐