摘要: 一 python与线程1.全局解释器锁GIL(用一下threading模块之后再来看~~)2.python线程模块的选择二 Threading模块1.线程创建2.多线程与多进程3.多线程实现socket4.Thread类的其他方法join方法:5.守护线程三 锁1.GIL锁(Global Interpreter Lock)2.同步锁GIL VS LockGIL锁与互斥锁综合分析互斥锁与join的区... 阅读全文
posted @ 2019-04-16 20:08 陈小木 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 一 背景知识1.进程2.有了进程为什么还要线程3.线程的出现二 线程和进程的关系三 线程的特点四 线程的实际应用场景五 内存中的线程六 用户级线程和内核级线程(了解)1.用户级线程2.内核级线程3.用户级和内核级线程的对比4.混合实现5.linux操作系统的NPTL一 背景知识1.进程​ 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运... 阅读全文
posted @ 2019-04-16 10:47 陈小木 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 一 背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cp... 阅读全文
posted @ 2019-04-15 22:40 陈小木 阅读(406) 评论(0) 推荐(0) 编辑
摘要: ​ 我们已经了解了,运行中的程序就是一个进程。所有的进程都是通过它的父进程来创建的。因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程。多个进程可以实现并发效果,也就是说,当我们的程序中存在多个进程的时候,在某些时候,就会让程序的执行速度变快。以我们之前所学的知识,并不能实现创建进程这个功能,所以我们就需要借助python中强大的模块。​ 仔细说来,multip... 阅读全文
posted @ 2019-04-10 23:51 陈小木 阅读(563) 评论(0) 推荐(0) 编辑
摘要: # django的中间件?# django的请求周期# django的中间件做登录判断?# django的分页## 今天的任务# 1.实现登录功能# 2.实现用户的管理# 3.实现分页# 4.实现用户的新增,编辑,删除思考:在之前我们判断用户是否登录的方法:给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面。我们通过给几个特定视图函数加装饰器实现了这个需求。但是以后添加的视... 阅读全文
posted @ 2019-04-03 23:13 陈小木 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 模块安装pip install gitpython基本用法1. 初始化from git import RepoRepo.init('/data/test2') # 创建一个git文件夹2. 添加与提交repo.index.add(['a.txt']) #将文件提交到缓存区repo.inex.commit('update new') # 将缓存区文件提交到版本库3. 回滚repo.index.che... 阅读全文
posted @ 2019-03-26 23:03 陈小木 阅读(14882) 评论(0) 推荐(0) 编辑
摘要: 将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作远程过程调用(Remote Procedure Call)或者 RPC。RPC是一个计算机通信协议。比喻将计算机服务运行理解为厨师做饭,厨师想做一个小葱拌豆腐,厨师需要洗小葱、切豆腐、调汁、凉拌。他一个人完成所有的事,如同古老的集中式应用,一台计算机做所有的事。制作小葱拌豆腐{ 厨师>洗小葱>切豆腐>凉拌 }rpc应用场景:而... 阅读全文
posted @ 2019-03-25 23:06 陈小木 阅读(275) 评论(0) 推荐(0) 编辑
摘要: python客户端# rabbitmq官方推荐的python客户端pika模块pip3 install pika应用场景1:单发送单接收1.生产-消费者模型P 是生产者C 是消费者中间hello是消息队列可以有多个P、多个CP发送消息给hello队列,C消费者从队列中获取消息,默认轮询方式生产者send.py我们的第一个程序send.py将向队列发送一条消息。我们需要做的第一件事是建立与R... 阅读全文
posted @ 2019-03-24 23:13 陈小木 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 1. 什么是消息队列生活里的消息队列,如同邮局的邮箱,如果没邮箱的话,邮件必须找到邮件那个人,递给他,才玩完成,那这个任务会处理的很麻烦,很慢,效率很低但是如果有了邮箱,邮件直接丢给邮箱,用户只需要去邮箱里面去找,有没有邮件,有就拿走,没有就下次再来,这样可以极大的提升邮件收发效率!rabbitmq是一个消息代理,它接收和转发消息,可以理解为是生活的邮局。你可以将邮件放在邮箱里,你可以确定有邮递员... 阅读全文
posted @ 2019-03-24 23:12 陈小木 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 一、同步异步,阻塞与非阻塞1.同步与异步比如说你要去一个餐厅吃饭,你点完菜以后假设服务员告诉你,你点的菜,要两个小时才能做完,这个时候你可以有两个选择一直在餐厅等着饭菜上桌你可以回家等着,这个时候你就可以把你的电话留给服务员,告诉服务员等什么时候你的饭菜上桌了,在给你打电话所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要... 阅读全文
posted @ 2019-03-22 20:06 陈小木 阅读(209) 评论(1) 推荐(0) 编辑