12 2019 档案

摘要:进程池进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列中没有可供使用的进进程,那么程序就会等待,直到进程池中有可用进程为止。进程池中有两个方法:apply apply_async串行示例from multiprocessing import Process, Poolimport time, osdef f(i): time.sleep(1) print(... 阅读全文
posted @ 2019-12-31 21:39 InfiniteCodes 阅读(151) 评论(0) 推荐(0)
摘要:进程间数据交互我们知道,两个独立进程所使用的内存空间也是独立的,不可交互的。但现实中就有那么些情况需要两个进程可以互相通信,怎么办?我们需要一个中继、翻译、中间人,不管你叫他什么,只要知道他是用来转发数据的就行了。Python中的这个中间人就叫queue,不是线程queue,是进程queue。使用方法和线程queue差不多。示例如下:from multiprocessing import Proc... 阅读全文
posted @ 2019-12-31 20:39 InfiniteCodes 阅读(165) 评论(0) 推荐(0)
摘要:多进程的第一个示例import multiprocessingimport threadingimport timedef thread_run(): print(threading.get_ident()) #子线程输出线程ID号def run(name): time.sleep(2) print('Hello ', name) t = threading.Thre... 阅读全文
posted @ 2019-12-31 19:22 InfiniteCodes 阅读(156) 评论(0) 推荐(0)
摘要:首先,我们直到Python多线程是假多线程,实际上同一时刻只有一个核在执行任务。其次,要知道IO(INPUT/OUPUT)操作不占用CPU,但计算会占用CPU。所以,Python多线程不适合CPU密集操作型任务;适合IO操作密集型任务,比如SocketServer就属于IO操作密集型。如何才能用到CPU更多的核?由于两个独立进程之间不能通信,此时GIL会失效,GIL只对Python代码起作用,而无... 阅读全文
posted @ 2019-12-31 11:58 InfiniteCodes 阅读(91) 评论(0) 推荐(0)
摘要:GIL(Global Interpreter Lock)全局解释器锁In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary main... 阅读全文
posted @ 2019-12-30 23:30 InfiniteCodes 阅读(262) 评论(0) 推荐(0)
摘要:queue队列日,这篇好长啊….queue is especially useful in threaded programming when information must be exchanged safely between multiple threads.多线程编程环境下,当在多条线程中,信息必须被安全的交换时,queue尤其有用。class queue.Queue(maxsize=0... 阅读全文
posted @ 2019-12-30 23:21 InfiniteCodes 阅读(129) 评论(0) 推荐(0)
摘要:类Fabric主机管理工具开发要求:主机分组登陆后显示主机分组,选择分组后查看主机列表可批量执行命令、发送文件,结果实时返回主机用户名密码不同 阅读全文
posted @ 2019-12-30 22:01 InfiniteCodes 阅读(126) 评论(0) 推荐(0)
摘要:EventsAn event is a simple synchronization object;一个事件就是一个简单的同步对象;the event represents an internal flag, 事件代表一个内部标记,and threads can wait for the flag to be set, or set or clear the flag themselves.并且线... 阅读全文
posted @ 2019-12-30 11:01 InfiniteCodes 阅读(196) 评论(0) 推荐(0)
摘要:Semaphore(信号量)互斥锁 同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据 ,比如学校门口的小旅馆有5间房,那最多只允许5对小情侣进去啪,后面的人只能等里面有人出来了才能再进去。示例import threading, timedef run(n): semaphore.acquire() #信号量获取,一次5个 time.sleep(1)... 阅读全文
posted @ 2019-12-29 22:25 InfiniteCodes 阅读(105) 评论(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 阅读(143) 评论(0) 推荐(0)
摘要:进程与线程介绍线程是操作系统能够运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。从技术性上来说,一段上下文(就是一个线程)由若干CPU寄存器的值组成,进程与线程不同,一条线程是一段指令上下文。一个进程是一堆与计算有关的资源集合。一个进程可以有一条或多条线程。注意:与进程有关的资源集合包... 阅读全文
posted @ 2019-12-29 11:18 InfiniteCodes 阅读(201) 评论(0) 推荐(0)
摘要:本节实现一个FTP服务器,要求如下:用户加密认证允许同时多用户登录每个用户有自己的家目录,且只能访问自己的家目录对用户进行磁盘配额,每个用户的可用空间不同允许用户在FTP Server上随意切换目录允许用户查看当前目录下的文件允许上传和下载文件,保证文件一致性文件传输过程中显示进度条附加功能:支持文件的断点续传 阅读全文
posted @ 2019-12-28 11:04 InfiniteCodes 阅读(186) 评论(0) 推荐(0)
摘要:SocketServer()简介socketserver()最主要的作用就是实现Socket的并发处理。socketserver()简化了编写网络服务器的开发。简单来说,socketserver()就是对socket()的一个再封装,有以下四种基本类型(以下内容引自官方文档):TCPServer uses the Internet TCP protocol, which provides for ... 阅读全文
posted @ 2019-12-27 18:14 InfiniteCodes 阅读(238) 评论(0) 推荐(0)
摘要:Socket语法 Python中,我们用Socket()函数来创建套接字,语法如下: socket.socket([family[, type[, proto]]]) 参数 family:套接字家族可以使用AF_UNIX或者AF_INET type:套接字类型可以根据是面向连接的还是非连接分为SOC 阅读全文
posted @ 2019-12-26 20:56 InfiniteCodes 阅读(287) 评论(0) 推荐(0)
摘要:本博客Python内容的索引,以后就照着它写了。 阅读全文
posted @ 2019-12-20 17:44 InfiniteCodes 阅读(385) 评论(0) 推荐(0)