摘要: 协程基础 一、引言 之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把CPU的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。 随着我 阅读全文
posted @ 2019-09-22 17:52 半哑Lin 阅读(191) 评论(0) 推荐(0)
摘要: Python程序中的线程操作 concurrent模块 一、Python标准模块——concurrent.futures 官方文档:https://docs.python.org/dev/library/concurrent.futures.html 二、介绍 concurrent.futures模 阅读全文
posted @ 2019-09-22 17:51 半哑Lin 阅读(629) 评论(0) 推荐(1)
摘要: Python程序中的线程操作 锁 一、同步锁 1.1多个线程抢占资源的情况 1.1.1对公共数据的操作 1.2同步锁的引用 1.3互斥锁与join的区别 有的同学可能有疑问:既然加锁会让运行变成串行,那么我在start之后立即使用join,就不用加锁了啊,也是串行的效果啊 没错:在start之后立刻 阅读全文
posted @ 2019-09-22 17:50 半哑Lin 阅读(1251) 评论(0) 推荐(1)
摘要: Python程序中的线程操作 线程队列 一、线程队列 queue队列:使用 ,用法和进程Queue一样 当必须在多个线程之间安全地交换信息时,队列在线程编程中尤其有用。 二、先进先出 三、后进先出 四、存储数据时可设置优先级的队列 4.1优先级队列 4.2更多方法说明 Constructor for 阅读全文
posted @ 2019-09-22 17:50 半哑Lin 阅读(598) 评论(0) 推荐(1)
摘要: Python程序中的线程操作 守护线程 一、守护线程 无论是进程还是线程,都遵循:守护XX会等待主XX运行完毕后销毁。需要强调的是:运行完毕并非终止运行。 1. 对主进程来说,运行完毕指的是主进程代码运行完毕 2. 对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算 阅读全文
posted @ 2019-09-22 17:49 半哑Lin 阅读(612) 评论(0) 推荐(0)
摘要: GIL全局解释器锁 一、GIL全局解释器锁 GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全。 Python代码的执行由Python虚拟机(也叫解释器循环)来控制。Python在设计之初就考虑到 阅读全文
posted @ 2019-09-22 17:48 半哑Lin 阅读(153) 评论(0) 推荐(0)
摘要: Python程序中的线程操作 创建多线程 一、Python线程模块的选择 Python提供了几个用于多线程的编程的模块,包括thread、threading和Queue等。thread和threading模块允许程序员创建和管理线程。thread模块提供了基本的线程和锁的支持,threading提供 阅读全文
posted @ 2019-09-22 17:48 半哑Lin 阅读(2906) 评论(0) 推荐(0)
摘要: 内存中的线程 一、内存中的线程 多个线程共享同一个进程的地址空间中的资源,是对一台计算机上多个进程的模拟,有时也称线程为轻量级的进程。 而对一台计算机上多个进程,则共享物理内存、磁盘、打印机等其他物理资源。多线程的运行与多进程的运行类似,是CPU在多个线程之间的快速切换。 不同的进程之间是充满敌意的 阅读全文
posted @ 2019-09-22 17:47 半哑Lin 阅读(584) 评论(0) 推荐(0)
摘要: 进程和线程的区别 一、进程和线程的关系 线程与进程的区别可以归纳为以下4点: 1. 地址空间和其他资源(如打开文件):进程间相互独立,统一进程的个线程间共享。某进程内的线程在其他进程不可见。 2. 通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信—需要进程同步和互斥手段的 阅读全文
posted @ 2019-09-22 17:41 半哑Lin 阅读(932) 评论(0) 推荐(0)
摘要: 使用线程的实际场景 一、使用线程的实际场景 开启一个字处理软件进程,该进程肯定需要办不止一件事情,比如监听键盘输入,处理文字,定时自动将文字保存到硬盘,这三个任务操作的都是同一块数据,因而不能用多进程。只能在一个进程里并发地开启三个线程,如果是单线程,那就只能是,键盘输入时,不能处理文字和自动保存, 阅读全文
posted @ 2019-09-22 17:41 半哑Lin 阅读(225) 评论(0) 推荐(0)
摘要: 线程基础 一、线程概念的引入背景 1.1进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多 阅读全文
posted @ 2019-09-22 17:40 半哑Lin 阅读(188) 评论(0) 推荐(0)
摘要: Python程序中的进程操作 进程池(multiprocess.Pool) 一、进程池 为什么要有进程池?进程池的概念。 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗时 阅读全文
posted @ 2019-09-22 17:39 半哑Lin 阅读(1590) 评论(0) 推荐(0)
摘要: Python程序中的进程操作 进程间数据共享(multiprocess.Manager) 一、进程之间的数据共享 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。 这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展 阅读全文
posted @ 2019-09-22 17:30 半哑Lin 阅读(345) 评论(0) 推荐(0)
摘要: Python程序中的进程操作 进程间通信 一、进程间通信 IPC(Inter Process Communication) 二、队列 2.1概念介绍——multiprocess.Queue 创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递。 创建共享的进程 阅读全文
posted @ 2019-09-22 17:28 半哑Lin 阅读(942) 评论(0) 推荐(1)
摘要: Python程序中的进程操作 进程同步(multiprocess.Lock) 一、多进程抢占输出资源 二、使用锁维护执行顺序 上面这种情况虽然使用枷锁的形式实现了顺序的执行,但是程序又变成串行了,这样确实会浪费了时间,却保证了数据的安全。接下来,我们以模拟抢票为例,来看看数据安全的重要性。 三、多进 阅读全文
posted @ 2019-09-22 17:27 半哑Lin 阅读(1212) 评论(0) 推荐(0)
摘要: Python程序中的进程操作 开启多进程 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程。所有的进程都是通过它的父进程来创建的。因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程。多个进程可以实现并发效 阅读全文
posted @ 2019-09-22 17:26 半哑Lin 阅读(5414) 评论(0) 推荐(0)
摘要: 进程的创建和结束 一、进程的创建 但凡是硬件,都需要有操作系统去管理,只要有操作系统,就有进程的概念,就需要创建进程的方式,一些操作系统只为一个应用程序设计,比如微波炉中的控制器,一旦启动的微波炉,所有进程都已经存在。 而对于通用系统(跑很多应用程序),需要有系统运行过程中创建或撤销进程的能力,主要 阅读全文
posted @ 2019-09-22 17:24 半哑Lin 阅读(566) 评论(0) 推荐(0)
摘要: 同步异步阻塞非阻塞 一、状态介绍 在了解其他概念之前,外面首先要了解进程的几个状态。在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。 1. 就绪(Ready)状态:当进程已分配到除CPU以外的所有必要资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态 阅读全文
posted @ 2019-09-22 17:22 半哑Lin 阅读(228) 评论(0) 推荐(0)
摘要: 进程的并行和并发 一、进程的并行和并发 并行:并行是指两者同时执行,比如赛跑,两个人都在不停的往前跑;(资源够用,比如三个线程,四核的CPU) 并发:并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B用完继续给A,交替使用,目的是提高 阅读全文
posted @ 2019-09-22 17:21 半哑Lin 阅读(402) 评论(0) 推荐(0)
摘要: 进程调度 要想多个进程交替运行,操作系统必须对这些进程进行调度,这个调度也不是随即进行的,而是需要遵循一定的法则,由此就有了进程的调度算法。 一、先来先服务调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可以用于进程调度。FCFS算法比较有利于长作业(进程) 阅读全文
posted @ 2019-09-22 17:20 半哑Lin 阅读(443) 评论(0) 推荐(0)
摘要: 进程基础 一、操作系统背景知识 进程就是正在执行的一个过程,进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统。 PS:即使 阅读全文
posted @ 2019-09-22 17:19 半哑Lin 阅读(259) 评论(0) 推荐(0)
摘要: [TOC] 操作系统的发展史 一、手动操作 穿孔卡片 1946年第一台计算机诞生 20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。 程序员将对应于程序和数据的已穿孔的纸带或卡片装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行 阅读全文
posted @ 2019-09-22 17:18 半哑Lin 阅读(901) 评论(0) 推荐(0)
摘要: 一、Markdown基本语法 "001 Markdown基本语法" 二、计算机基础 "002 计算机基础之编程" "003 计算机组成原理" "004 计算机操作系统" "005 编程语言分类" "006 网络的瓶颈效应" 三、Python基础 "007 变量" "008 常量" "009 Pyth 阅读全文
posted @ 2019-09-22 17:16 半哑Lin 阅读(4592) 评论(0) 推荐(2)
摘要: 名称空间和作用域 前面我们说到函数内部的函数只能在函数内部调用,不能在函数外部调用,通过接下来的学习将会知道为什么会出现这种情况。 一、名称空间 名称空间(name spaces):在内存管理那一章时,我们曾说到变量的创建其实就是内存中开辟了一个新的空间。但是我们一直在没有说变量名的存储,其实在内存 阅读全文
posted @ 2019-09-22 17:15 半哑Lin 阅读(214) 评论(0) 推荐(0)
摘要: 函数嵌套 一、函数的嵌套定义 函数内部定义的函数,无法在函数外部使用内部定义的函数 from f2 现在有一个需求,通过给一个函数传参即可求得某个圆的面积或者圆的周长。也就是说把一堆工具丢进工具箱内,之后想要获得某个工具,直接从工具箱中获取就行了 那么函数嵌套的意义在哪里呢,是为了当需要某个函数方法 阅读全文
posted @ 2019-09-22 17:14 半哑Lin 阅读(1201) 评论(0) 推荐(0)
摘要: 可变长参数 可变长参数:方式有两种,一种是位置实参,另一种是关键字实参,因此形参也必须得有两种解决方法,依次来分别接收溢出的 位置实参( )与关键字实参(\ \ ) 一、可变长参数之 形参中的 会将溢出的位置实参全部接收,然后存储为元组的形式,再然后把元组赋值给\ 后的参数。需要注意的是:\ 后的参 阅读全文
posted @ 2019-09-22 17:13 半哑Lin 阅读(230) 评论(0) 推荐(0)
摘要: 函数对象 函数是第一类对象,即函数可以被当做数据处理。 一、函数对象的四大功能 1.引用 2.当作参数传给一个函数 from func 3.可以当作函数的返回值 from func 4.可以当作容器类型的元素 from func 阅读全文
posted @ 2019-09-22 17:13 半哑Lin 阅读(196) 评论(0) 推荐(0)
摘要: [TOC] 函数的调用 一、什么是函数调用 第一次讲函数其实就讲到了函数的调用,但是你不得不再次更新你对函数调用的印象。 即调用函数,会执行函数体代码,直到碰到return或者执行完函数体内所有代码结束。 函数运行完毕所有代码,如果函数体不写return,则会返回None None 二、为何用调用函 阅读全文
posted @ 2019-09-22 17:07 半哑Lin 阅读(340) 评论(0) 推荐(0)
摘要: [TOC] 函数的参数 一、形参和实参 1.1形参 在函数定义阶段括号内定义的参数,称之为形式参数,简称形参,本质就是变量名 1.2实参 在函数调用阶段括号内传入的参数,称之为实际参数,简称实参,本质就是变量的值。 二、位置参数 2.1位置形参 在函数定义阶段,按照从左到右的顺序依次定义的参数,称之 阅读全文
posted @ 2019-09-22 17:07 半哑Lin 阅读(281) 评论(0) 推荐(0)
摘要: [TOC] 函数的返回值 一、什么是返回值 函数内部代码经过一些逻辑处理得到结果。 nick 二、为什么要有返回值? 现在有一个需求,比较两个人的月薪,然后想获取月薪比较大人的年薪。 如果需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须要返回值。 需要注意的是: return是一个函数结 阅读全文
posted @ 2019-09-22 17:05 半哑Lin 阅读(252) 评论(0) 推荐(0)
摘要: [TOC] 定义函数的三种方式 一、无参函数 定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名 在函数阶段括号内没有参数,称为无参函数。需要注意的是:定义时无参,意味着调用时也无需传入参数。 如果函数体代码逻辑不需要依赖外部传入的值,必须得定义成无参函数。 二、有参函数 在函数定义阶 阅读全文
posted @ 2019-09-22 17:04 半哑Lin 阅读(1270) 评论(0) 推荐(0)
摘要: 网络的瓶颈效应 一、网络的瓶颈效应 上一节,我们讲到机器语言、汇编语言和高级语言,毫无疑问,机器语言和汇编语言我们可以放弃学习,谁想学让谁学去吧!我们重心可以放在高级语言上面,但是高级语言中的编译型语言和汇编型语言两者是互相矛盾的。这个时候对于不同的问题我们就应该有不同的策略,如果我们需要开发一个类 阅读全文
posted @ 2019-09-22 17:03 半哑Lin 阅读(319) 评论(0) 推荐(0)
摘要: 编程语言分类 一、机器语言 只要是谈到计算机基础,有一个东西是我们无法避免的,那就是编程到底是什么?我只放图,其他的你们自己YY。 现在来想象这样一个场景,如果奴隶来自不同的国家,作为尊贵而又穷逼买不起管家的奴隶主的我们,如果需要控制奴隶,则需要和奴隶有一定的沟通才能控制努力。 如果把奴隶换成计算机 阅读全文
posted @ 2019-09-22 17:02 半哑Lin 阅读(406) 评论(0) 推荐(0)
摘要: 计算机操作系统 一、操作系统引入 可能有很多同学都有碰到下面我说的这个场景,当我们花了8888大洋买了一台16G内存的专业吃鸡电脑时,打开电脑发现自己的电脑内存只有15G不到,然后就开始了吃鸡之旅。 但是如果你对你少掉的内存关心的话,你会发现并不是厂商为了节省造价成本,而这少掉的内存被某种东西给占用 阅读全文
posted @ 2019-09-22 17:00 半哑Lin 阅读(535) 评论(0) 推荐(0)
摘要: 计算机组成原理 计算机分为五大组成部分,分别为:控制器、运算器、存储器、输入设备和输出设备。其中控制器+运算器是计算机的中央处理器(CPU),相当于人类的大脑。 一、控制器 计算机的指挥系统。大脑指挥全身的器官运作,但是大脑不会随意的指挥身体行动,大脑只有在接受指令后才会控制身体行动(如果你患有急性 阅读全文
posted @ 2019-09-22 16:59 半哑Lin 阅读(505) 评论(0) 推荐(1)
摘要: 计算机基础之编程 一、什么是编程语言 Python和中文、英语语一样,都是一门语言,只要是语言,其实就可以看成是一种事物与另外一种事物沟通的介质。Python属于编程语言,编程语言是程序猿和计算机之间沟通的介质;中文和英语则是人与人之间沟通的介质。 二、什么编程 编程指的是:程序猿基于某种编程语言的 阅读全文
posted @ 2019-09-22 16:58 半哑Lin 阅读(488) 评论(0) 推荐(0)
摘要: [TOC] 函数的定义 一、函数体系 接下来,我们将按照这个函数体系给大家详细的介绍函数: 什么是函数? 为什么要用函数? 函数的分类:内置函数与自定义函数 如何自定义函数 语法 定义有参数函数,及有参函数的应用场景 定义无参数函数,及无参函数的应用场景 定义空函数,及空函数的应用场景 调用函数 如 阅读全文
posted @ 2019-09-22 16:21 半哑Lin 阅读(686) 评论(0) 推荐(0)