摘要: 一、我们知道无论是创建多进程还是创建多线程池来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。 基于单线程来实现并发,这样就可以节省创建线程进程所消耗的时间。 二、如何实现在两个函数之间的切换? def func1(): print(1) yield print(3) yi 阅读全文
posted @ 2018-02-08 16:05 笨笨侠 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 一、为什么有了进程还要有线程 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其它资源,可以提高计算机的利用率。但进程还存在很多缺陷的,主要体现在: 1:进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。 2:进程在执行的过程中如果阻塞,整个进程就会 阅读全文
posted @ 2018-02-06 16:16 笨笨侠 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 一、为什么要有进程池 首先,创建进程需要消耗时间,销毁进程也需要时间。其次,即使开启了成千上万的进程,操作系统也不能让它们同时执行,这样反而会影响程序的效率。因此我们不能无限制的根据任务开启或者结束进程。 进程池:定义了一个池子,在里面放上固定数量的进程,有需求来了,就拿这个池中的一个进程来处理任务 阅读全文
posted @ 2018-02-05 16:29 笨笨侠 阅读(3414) 评论(0) 推荐(1) 编辑
摘要: 一、为什么要使用生产者和消费者? 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程,在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据,同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者,为了解决这个 阅读全文
posted @ 2018-02-05 16:06 笨笨侠 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 一、为了防止客户端被人非法利用,需要在使用之前对客户端进行合法性验证。接下来就是客户端验证的几种方法 hmac 加密方法 客户端验证的总的思路是将服务端随机产生的指定位数的字节发送到客户端,两边同时用hmac进行加密,然后对生成的密文进行比较,相同就是合法的客户端,不相同就是不合法的端户端 二、so 阅读全文
posted @ 2018-02-05 08:44 笨笨侠 阅读(532) 评论(0) 推荐(0) 编辑
摘要: 一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理、调度进程,并且将多个进程对硬件的竞争变得有序 二 多道技术: 1.产生背景:针对单核,实现并发 ps: 现在的主机一般是多核,那么每个核都会利用多道技术 有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束 阅读全文
posted @ 2018-02-01 19:36 笨笨侠 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 一、软件开发的架构 1: C/S架构 Client与Server 客户端与服务器端,这里的客户端一般泛指客户端应用EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。 2: B/S架构 Browser与Server 浏览器端与服务器端。 Browser浏览器,其实也是 阅读全文
posted @ 2018-01-25 17:20 笨笨侠 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 例1: 运行结果: 例2: 阅读全文
posted @ 2018-01-23 16:04 笨笨侠 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 一、isinstance和issubclass class A:pass class B(A):pass a = A() print(isinstance(a,A)) # True a是A的对象 print(issubclass(B,A)) # True B是A的派生类 print(issubcla 阅读全文
posted @ 2018-01-22 16:46 笨笨侠 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 一、property属性 from math import pi class Circle: def __init__(self,r): self.r = r @property def perimeter(self): return 2*pi*self.r @property def area(s 阅读全文
posted @ 2018-01-19 19:38 笨笨侠 阅读(125) 评论(0) 推荐(0) 编辑