摘要: 打开 cmd终端 1 输入pip install 模块名。 2 等待安装完成即可。 阅读全文
posted @ 2019-03-19 16:48 夜晚的潜水艇 阅读(2909) 评论(0) 推荐(0)
摘要: 基本的查询语句 ​ select (* | 字段名 | 四则运算 | 聚合函数) from 表名称; 取别名 当字段名显示较长时 可以添加别名 ​ select 字段名 as 别名 from 表名称; ​ as可以省略 ​ select 字段名 别名 from 表名称; 计算每个人的总分 计算每个人 阅读全文
posted @ 2019-03-18 22:29 夜晚的潜水艇 阅读(916) 评论(0) 推荐(0)
摘要: 数据库 什么是数据库 就是存储数据的仓库( 容器) 存储数据的方式 1 变量 无法永久存储 2 文件处理 可以永久存储 文件处理存在的弊端: 1 文件处理速度慢 2 文件只能在自己的计算机上读写,无法被共享(局域网除外) 单台计算机的性能终归是有限的 1 升级你的硬件设备 提升幅度有限 称之为垂直拓 阅读全文
posted @ 2019-03-17 10:53 夜晚的潜水艇 阅读(276) 评论(0) 推荐(0)
摘要: 非阻塞IO 即使遇到了io也不会导致程序阻塞 会继续执行意味着即使遇到io操作cpu也不会执行也不会被剥夺 程序效率就高了 原因是 需要无线循环 去向操作系统拿数据import socket import time s = socket.socket()s.bind(("127.0.0.1",999 阅读全文
posted @ 2019-03-12 20:57 夜晚的潜水艇 阅读(153) 评论(0) 推荐(0)
摘要: 当你今后在开发一些高并发程序时,很有可能出现线程/进程安全问题 解决方案只有加锁,但是在使用锁时,很有可能出现死锁问题 出现死锁的问题的两种问题的情况1,对同一把锁调用了多次 acquire导致死锁问题(最low的死锁问题),你应该避免这种写法 2,你有多把锁,一个线程抢一把锁,要完成任务必须同时抢 阅读全文
posted @ 2019-03-12 20:44 夜晚的潜水艇 阅读(196) 评论(0) 推荐(0)
摘要: 守护线程 守护线程会在主线程结束就立即结偶完成束,即使任务没有完成 主线程会等待所有子线程全部完成最后结束 结论 :守护线程会在所有非守护进程结束后结束 from threading import Thread,current_threadimport time def task1(): print 阅读全文
posted @ 2019-03-12 20:17 夜晚的潜水艇 阅读(165) 评论(0) 推荐(0)
摘要: IO 多路复用 多路复用也是要用单线程来处理客户端并发,与其他模型相比多出了select这个模块。 程序不再直接问操作系统要数据,而是先发起一个select调用,select会阻塞直到其中某个socket准备就绪,此时应用程序再发起系统调用来获取数据,由于select已经帮我们确认了某个socket 阅读全文
posted @ 2019-03-12 19:39 夜晚的潜水艇 阅读(150) 评论(0) 推荐(0)
摘要: 异步回调 回调: 其实说的是回调函数 ,给异步任务绑定一个函数,当任务完成时会自动调用该函数 具体使用 当你往pool中添加 了一个异步任务,会返回一个表示结果的函数对象,有一个对象的绑定方法add_done_callback,需要一个函数作为参数,注意:回调函数必须有且 只有 一个参数 就是对象本 阅读全文
posted @ 2019-03-11 19:50 夜晚的潜水艇 阅读(266) 评论(0) 推荐(0)
摘要: 什么是进程/线程池 池本身表示一个容器,本质上就是一个存储进程或线程的列表 池中该储存线程还是进程 如果是IO密集型任务使用线程池,如果是计算密集型任务则使用进程池 为什么需要进程或者线程池 在很多情况下需要控制进程或线程的数量在一个合理的范围内,例如TCP程序中,一个客户端对应一个线程,虽然线程的 阅读全文
posted @ 2019-03-09 18:15 夜晚的潜水艇 阅读(549) 评论(0) 推荐(0)
摘要: GIL锁 在CPython中,这个全局解释器锁,也称GIL,是一个互斥锁,防止多个线程在同一时间执行pyonty字节码,这个锁是非常重要的,因为cpython的内存管理非线程安全的,很多其他的特性依赖于GIL,所以即使它影响了程序效率也无法将其直接去掉。 总结:在cpython中,GIL会把线程的并 阅读全文
posted @ 2019-03-09 15:23 夜晚的潜水艇 阅读(221) 评论(0) 推荐(0)