摘要: Semaphore(信号量)互斥锁 同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据 ,比如学校门口的小旅馆有5间房,那最多只允许5对小情侣进去啪,后面的人只能等里面有人出来了才能再进去。示例import threading, timedef run(n): semaphore.acquire() #信号量获取,一次5个 time.sleep(1)... 阅读全文
posted @ 2019-12-29 22:25 InfiniteCodes 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 线程锁(Mutex)互斥锁以上演示的是GIL锁,GIL锁只能保证同一时刻,CPU上只有一条线程在运行,但不能保证同一时刻只有一条线程在修改数据,要想实现这个效果,我们要加上另一把锁,线程锁。示例如下:import threadingimport timestart_time = time.time()def run(n): lock.acquire() #获取线程锁对象 glob... 阅读全文
posted @ 2019-12-29 22:05 InfiniteCodes 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 进程与线程介绍线程是操作系统能够运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。从技术性上来说,一段上下文(就是一个线程)由若干CPU寄存器的值组成,进程与线程不同,一条线程是一段指令上下文。一个进程是一堆与计算有关的资源集合。一个进程可以有一条或多条线程。注意:与进程有关的资源集合包... 阅读全文
posted @ 2019-12-29 11:18 InfiniteCodes 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 本节实现一个FTP服务器,要求如下:用户加密认证允许同时多用户登录每个用户有自己的家目录,且只能访问自己的家目录对用户进行磁盘配额,每个用户的可用空间不同允许用户在FTP Server上随意切换目录允许用户查看当前目录下的文件允许上传和下载文件,保证文件一致性文件传输过程中显示进度条附加功能:支持文件的断点续传 阅读全文
posted @ 2019-12-28 11:04 InfiniteCodes 阅读(181) 评论(0) 推荐(0) 编辑
摘要: SocketServer()简介socketserver()最主要的作用就是实现Socket的并发处理。socketserver()简化了编写网络服务器的开发。简单来说,socketserver()就是对socket()的一个再封装,有以下四种基本类型(以下内容引自官方文档):TCPServer uses the Internet TCP protocol, which provides for ... 阅读全文
posted @ 2019-12-27 18:14 InfiniteCodes 阅读(211) 评论(0) 推荐(0) 编辑
摘要: Socket语法 Python中,我们用Socket()函数来创建套接字,语法如下: socket.socket([family[, type[, proto]]]) 参数 family:套接字家族可以使用AF_UNIX或者AF_INET type:套接字类型可以根据是面向连接的还是非连接分为SOC 阅读全文
posted @ 2019-12-26 20:56 InfiniteCodes 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 本博客Python内容的索引,以后就照着它写了。 阅读全文
posted @ 2019-12-20 17:44 InfiniteCodes 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 要求:用户加密认证允许同时多用户登录每个用户有自己的家目录 ,且只能访问自己的家目录对用户进行磁盘配额,每个用户的可用空间不同允许用户在ftp server上随意切换目录允许用户查看当前目录下文件允许上传和下载文件,保证文件一致性文件传输过程中显示进度条附加功能:支持文件的断点续传 阅读全文
posted @ 2019-10-24 10:14 InfiniteCodes 阅读(143) 评论(0) 推荐(0) 编辑
摘要: Python中,反射有4个方法。分别是:hasattr()、getattr()、setattr()和delattr()。hasattr() 定义hasattr()函数用于判断对象是否包含对应的属性。语法hasattr(object, name)参数object - 对象name - 字符串,属性名返回值如果对象有该属性返回 True,否则返回 False。getattr()定义getattr()函... 阅读全文
posted @ 2019-10-22 21:56 InfiniteCodes 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 客户端import socket 导入socket模块client = socket.socket() 声明socket协议类型,同时生成socket连接对象client.connect(('localhost', 6969)) 连接client.send(b'Hello World!') 发送数据给服务器端,数据必须为bytes类... 阅读全文
posted @ 2019-09-21 10:37 InfiniteCodes 阅读(257) 评论(0) 推荐(0) 编辑