摘要: 引子 上一节中我们知道GIL锁将导致CPython中多线程无法并行执行,只能并发的执行。 而并发实现的原理是切换+保存,那就意味着使用多线程实现并发,就需要为每一个任务创建一个线程,必然增加了线程创建销毁与切换的带来的开销 明显的问题就是,高并发情况下,由于任务数量太多导致无法开启新的线程,使得即没有实际任务要执行,... 阅读原文
2019-07-08 17:31:02 阅读(2316) 评论(0)
摘要: 客户端与服务端多功能传输小程序 server.py from threading import Thread,Event,Lock from concurrent.futures import ThreadPoolExecutor from socket import socket from struct impo... 阅读原文
2019-07-08 16:12:01 阅读(2365) 评论(0)
摘要: 函数 认识函数 函数将一些代码进行封装 定义函数: 封装 减少重复代码 # def 关键字 函数名(): 函数体(代码块) def make(): print('1') print('2') print('3') print('4') print('5') r... 阅读原文
2019-07-08 16:06:02 阅读(2295) 评论(0)
摘要: 一、安装 首先scrapy的安装之前需要安装这个模块:wheel、lxml、Twisted、pywin32,最后在安装scrapy pip install wheel pip install lxml 这个地址是一个下载python包的好地方 https://www.lfd.uci.edu/~gohlke/pytho... 阅读原文
2019-07-08 15:25:02 阅读(2490) 评论(0)
摘要: 07.07自我总结 一.GIL 1.概念 在CPython中,这个全局解释器锁,也称为GIL,是一个互斥锁 2.带来的问题 首先必须明确执行一个py文件,分为三个步骤 从硬盘加载Python解释器到内存 从硬盘加载py文件到内存 解释器解析py文件内容,交给CPU执行 当进程中仅存在一条线程时,GIL锁的存在没... 阅读原文
2019-07-08 15:16:02 阅读(1690) 评论(0)
摘要: 07.07自我总结 Event事件 一.导入模块 from threading import Event 二.概念 线程间状态同步:即将一个任务丢到子进程中,这个任务将异步执行,如何获取到这个任务的执行状态 注意:执行状态和执行结果不是同一个概念,异步回调拿到的是任务的执行结果 假设 一个线程 负责启动服务器 启动服... 阅读原文
2019-07-08 14:23:02 阅读(2371) 评论(0)
摘要: 07.07自我总结 进程池与线程池 一.进程池与线程池的函数的导入 进程池:from concurrent.futuresimport ProcessPoolExecutor 线程池:from concurrent.futuresimport ThreadPoolExecutor 二.进程池与线程池的定义 1.进程池... 阅读原文
2019-07-08 14:11:01 阅读(2557) 评论(0)
摘要: 0707自我总结 队列 1.queue 模块 常用的两种方法 Queue:先放什么参数先获取什么参数 PriorityQueue:将放进去的所有参数进行排序,再按照顺序取出 LifoQueue:构造一个Lifo队列,会从最后开始往前取 2.queue 创建对象的方法 qsize() :返回queue的近似值。注意:q... 阅读原文
2019-07-08 14:03:01 阅读(3575) 评论(0)
摘要: 认证组件 权限组件    频率组件   阅读原文
2019-07-08 14:00:09 阅读(3530) 评论(0)
摘要: 07.07自我总结 一.多进程的应用 1.多进程模块 multiprocessing 其中常用到的几个功能 Process用于定义进程 #定义进程有两种方式 from multiprocessing import Process #第一种方式定义个方法 def func(aaa): pritn(123) ... 阅读原文
2019-07-08 13:36:02 阅读(2350) 评论(0)