分类
摘要:
引子
上一节中我们知道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)