随笔分类 - Python基础
摘要:引言 我一共建立了2张表用于演示SQL Alchemy users usertype 导包语句 初始化语句 定义两张表对应的两个类 自定义方法 Session创建 添加数据 查询 删除 修改 高级查询 分组 分页 排序 between ... and ... in 与 not in 连表查询
阅读全文
摘要:与select模块实现的IO模型对比 1.select,需要遍历socket列表,频繁的对等待队列进行添加移除操作, 2.数据到达后还需要给变量所有socket才能获知哪些socket有数据 两个操作消耗的时间随着要监控的socket的数量增加而大大增加, 处于效率考虑才规定了最大只能监视1024个
阅读全文
摘要:IO模型 模型就是解决某个问题的套路 IO问题: 输入输出 阻塞IO模型 (blocking IO) 我要一个用户名用来执行登陆操作,问题用户名需要用户输入,输入需要耗时, 如果输入没有完成,后续逻辑无法继续,所以默认的处理方式就是 等待!!! 将当前进程阻塞住,切换至其他进程执行,等到按下回车键,
阅读全文
摘要:# 服务端代码 import socket import select server = socket.socket() server.bind(("127.0.0.1", 1688)) server.listen(5) # server.setblocking(False) rlist = [server, ] # 将需要检测(是否可读==recv)的socket对象放到该列表中 #...
阅读全文
摘要:# 实现协程的第二种方式 # 利用gevent 打上monkey补丁 from gevent import monkey monkey.patch_all() import gevent import time from threading import current_thread,enumerate def task1(): print(current_thread(),111)...
阅读全文
摘要:import greenlet # 绿色线程 (实现协程的一种方式) import time def task1(): print("task1 run") g2.switch() print("task1 over") g2.switch() def task2(): print("task2 run") g1.switch() t...
阅读全文
摘要:# 使用yield实现单线程并发多个任务 # 引子 : 生成器回顾 # def func1(): # print('1') # yield # print('2') # yield # print('3') # yield # res = func1() # print(res) # # next(res) # 1 # next(res) #...
阅读全文
摘要:Queue LifoQueue PriorityQueue
阅读全文
摘要:GIL 释义 Global Interpreter Lock 全局解释器锁 GIL为CPython独有 使用Cpython的原因 之所以使用Cpython的原因?? 这样设计GIL的原因 GIL锁的加锁与解锁时机 GIL给我们造成的影响 多线程不能并行 案例 解决方案 GIL锁与自定义锁的关系
阅读全文
摘要:异步回调 爬虫中的异步回调(基于线程) 爬虫中的异步回调(基于进程)
阅读全文
摘要:操作日志模块 # 日志:日之石日常的流水,将程序运行过程中的状态或数据尽心记录,一般是记录到日志文件当中的。 # 在正常的项目之中,项目的运行的一些打印信息,采用logging打印到文件当中,这个过程就称作为 日志记录模块 # 以下为默认的操作日志模块代码! 简单配置 # 导入日志模块 import
阅读全文
摘要:获取当前运行环境的CPU核心数(线程数) 进程池(线程池)涉及到的专业英文词汇 进程池(线程池)特点 进程池(线程池)生成器的导包语句 创建进程池(线程池)实例:创建池子 线程池的使用 进程池的使用 进程池(线程池)的shutdown
阅读全文
摘要:IO密集型任务 子进程解决方案 IO密集型任务任务 子线程解决方案 计算密集型任务 子进程解决方案 计算密集型任务 子线程解决方案 总结:
阅读全文
摘要:线程 线程是操作系统中最小的运算调度单元,被包含在进程中,一个线程就是一个固定的执行流程 线程和进程的关系 线程不能单独存在 必须存在于进程中, 进程是一个资源单位,其包含了运行程序所需的所有资源 线程才是真正的执行单位 没有线程,进程中的资源无法被利用起来,所以一个进程至少包含一个线程,称之
阅读全文
摘要:# 以下内容来自CSDN#英文使用utf-8 转换成16进制hex字符串的方法 newstr = 'asd' b_str = bytes(newstr,encoding='utf-8') print(b_str) hex_str = b_str.hex() #将bytes类型转换成16进制的hex字符串 print(hex_str) #字节码转16进制hex的方法 print(byt...
阅读全文
摘要:进程 一个正在被运行的程序就称之为进程,是程序具体执行过程,一种抽象概念 进程来自于操作系统 多进程 进程和程序的区别 程序就是一堆计算机可以识别文件,程序在没有被运行就是躺在硬盘上的一堆二进制 运行程序时,要从硬盘读取数据到内存中,CPU从内存读取指令并执行 , 一旦运行就产生了进程 一个程序可以
阅读全文
摘要:网络开发架构 1.C/S架构 即:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的。 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。 2.B/S架构 B/S即:Br
阅读全文
摘要:什么是异常 异常指不同于常规的情况 在python中是表示程序遇到了错误 一旦出现了错误,解释器会给出错误详细信息,并终止程序的执行! 这个过程我们称为抛出异常 常见异常 AttributeError 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x IOError 输入/输出异常;
阅读全文
摘要:subprocess 称之为子进程,进程是一个正在运行的程序 为什么要使用子进程,因为之前的os.system()函数无法获取命令的执行结果,另一个问题是当我们启动了某一其他进程时无法与这个子进程进行通讯, 当要在python程序中执行系统指令时 就应该使用subprocess 自动化运维经常会使用
阅读全文