异步队列

python:进程

我们两清 提交于 2019-11-28 11:29:12
一、操作系统的发展 1,计算机诞生的初期是没有操作系统 ,程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。 手工操作方式两个特点:   (1)用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低。   (2)CPU 等待手工操作。CPU的利用不充分。 2,后来为了提升运行效率,就出现了批处理系统 。批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。   批处理系统——串行、速度快 联机批处理 读磁带的时候速度快 脱机批处理 读磁带和cpu工作并发3,所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。 多道程序系统 —— 并行 操作系统的各种管理功能 时空的复用 : 空间隔离开来,cpu看起来可以处理多个任务 4,分时技术:把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。 分时系统 —— 更好的实现了 并行

js中对同步和异步的理解

喜欢而已 提交于 2019-11-28 09:00:48
你应该知道,javascript语言是一门“ 单线程 ”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流水线而已,要么加工,要么包装,不能同时进行多个任务和流程。 那么这里说的同步和异步到底是什么呢?如果你真的不懂,我希望你认真读完这篇文章。其实我个人觉得js官方的文档在使用两个词的时候并不准确,包括很多其他词汇,都只是听起来高深,但实际应用好像跟这些词没半毛钱关系。例如“事件委托”这个词,不知道的人乍一看谁又能说出“事件委托”是什么意思?委托什么事件?怎么个委托,我看不如干脆就叫“事件在外层元素中的捕获”,虽然长一点,一下就能看懂。 回归正轨,“同步”——一下就让人想到“一起”这个词;“异步”呢,从字面来讲,好像是在不同的(异)的ways上do something,那首先想到的词可能是“一边...一边...”,比如‘小明一边吃雪糕一边写作业’,这完全没毛病,雪糕吃完了,作业也写完了,这就是异步?那就大错特错了! 其实同步和异步,无论如何,做事情的时候都是只有一条流水线(单线程), 同步和异步的差别就在于这条流水线上各个流程的执行顺序不同 。 最基础的异步是setTimeout和setInterval函数,很常见,但是很少人有人知道其实这就是异步,因为它们可以控制js的执行顺序

【并发编程必备基础之进程】

纵饮孤独 提交于 2019-11-28 07:41:46
原文: http://blog.gqylpy.com/gqy/236 目录 1.操作系统背景知识 2.什么是进程 3.进程调度 4.进程的并行与并发 5.同步异步阻塞非阻塞 6.进程的创建与结束 1.操作系统背景知识 顾名思义 ,进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,应先了解操作系统, 点击进入操作系统介绍 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用+空间多路复用+硬件上支持分离),如果没有进程的抽象,现代计算机将不复存在。 必备理论基础 1.操作系统的作用: 1)隐藏复杂的硬件接口,提供良好的抽象接口. 2)管理,调度进程,并且将多个进程对硬件的抢夺变得有序 2.多道技术 1)产生背景:针对单核,实现并发 2)空间上的复用:如内存中同时有多道程序 3)时间上的复用:复用一个cpu的时间片,强调:遇到io切,占用cpu的时间过长也切,核心在于切之前将进程的状态保存下载,这样才能保证下次切换回来时能基于上次切走的位置继续运行. PS:现在的cpu一般都是多核的,同样

线程,进程,协程面试知识点

微笑、不失礼 提交于 2019-11-28 04:12:50
2. threading.local的作用? import threading # 创建全局ThreadLocal对象: localVal = threading.local() localVal.val = "Main-Thread" def process_student(): print( '%s (in %s)' % (localVal.val, threading.current_thread().name)) def process_thread(name): #赋值 localVal.val = name process_student() t1 = threading.Thread(target= process_thread, args=('One',), name='Thread-A') t2 = threading.Thread(target= process_thread, args=('Two',), name='Thread-B') t1.start() t2.start() t1.join() t2.join() print(localVal.val) #打印结果: ''' One (in Thread-A) Two (in Thread-B) Main-Thread ''' ''' threading。local()这个方法:用来保存一个全局变量

Reactive 漫谈

∥☆過路亽.° 提交于 2019-11-28 01:51:10
目录 概念 面向流设计 异步化 响应式宣言 参考文档 概念 Reactive Programming(响应式编程)已经不是一个新东西了。 关于 Reactive 其实是一个泛化的概念,由于很抽象,一些理论性的介绍很容易把人带到沟里去,包括一些语言框架在实现上也会使用不同的一些概念。 按照 维基百科的解释: reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change 意思就是,Reactive Programming 就是一种面向数据流、关注变更的声明式编程范式。 面向数据流比较容易理解,而关注变更则说的应该是数据流的特点,比如来自某个界面元素属性的变更(前端领域)、又或是某个后端实体的更新事件(日志).. 以下面的这个函数为例: c = a + b; 这里定义了变量c 是 变量a、变量b 之和,当a=1,b=2时,c的值就是3。 假设我们在程序中执行了这个语句,那么对于一次执行过程所产生的c的值就是确定的(上下文中的a、b变量也是确定的) 但是,如果a、b的值是不确定的呢?即这个语句 仅仅是定义了变量c与 变量a、b 的计算关系 ,那么c 的值就是可变的! 如下: a=1,b=1,c=2 a=2,b=2,c=4

【并发编程必备基础之进程】

放肆的年华 提交于 2019-11-27 21:13:02
原文: http://blog.gqylpy.com/gqy/236 " 目录 1.操作系统背景知识 2.什么是进程 3.进程调度 4.进程的并行与并发 5.同步异步阻塞非阻塞 6.进程的创建与结束 1.操作系统背景知识 顾名思义 ,进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,应先了解操作系统, 点击进入操作系统介绍 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用+空间多路复用+硬件上支持分离),如果没有进程的抽象,现代计算机将不复存在。 必备理论基础 1.操作系统的作用: 1)隐藏复杂的硬件接口,提供良好的抽象接口. 2)管理,调度进程,并且将多个进程对硬件的抢夺变得有序 2.多道技术 1)产生背景:针对单核,实现并发 2)空间上的复用:如内存中同时有多道程序 3)时间上的复用:复用一个cpu的时间片,强调:遇到io切,占用cpu的时间过长也切,核心在于切之前将进程的状态保存下载,这样才能保证下次切换回来时能基于上次切走的位置继续运行. PS:现在的cpu一般都是多核的,同样

【并发编程必备基础之进程】 -- 2019-08-17 00:04:39

有些话、适合烂在心里 提交于 2019-11-27 14:10:51
原文: http://blog.gqylpy.com/gqy/236 " 目录 1.操作系统背景知识 2.什么是进程 3.进程调度 4.进程的并行与并发 5.同步异步阻塞非阻塞 6.进程的创建与结束 1.操作系统背景知识 顾名思义 ,进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,应先了解操作系统, 点击进入操作系统介绍 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用+空间多路复用+硬件上支持分离),如果没有进程的抽象,现代计算机将不复存在。 必备理论基础 1.操作系统的作用: 1)隐藏复杂的硬件接口,提供良好的抽象接口. 2)管理,调度进程,并且将多个进程对硬件的抢夺变得有序 2.多道技术 1)产生背景:针对单核,实现并发 2)空间上的复用:如内存中同时有多道程序 3)时间上的复用:复用一个cpu的时间片,强调:遇到io切,占用cpu的时间过长也切,核心在于切之前将进程的状态保存下载,这样才能保证下次切换回来时能基于上次切走的位置继续运行. PS:现在的cpu一般都是多核的,同样

【并发编程必备基础之进程】 -- 2019-08-16 23:57:27

老子叫甜甜 提交于 2019-11-27 14:10:25
原文: http://blog.gqylpy.com/gqy/236 " 目录 1.操作系统背景知识 2.什么是进程 3.进程调度 4.进程的并行与并发 5.同步异步阻塞非阻塞 6.进程的创建与结束 1.操作系统背景知识 顾名思义 ,进程即正在执行的一个过程,进程是对正在运行的程序的一个抽象。进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老的最重要的抽象概念之一,操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,应先了解操作系统, 点击进入操作系统介绍 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用+空间多路复用+硬件上支持分离),如果没有进程的抽象,现代计算机将不复存在。 必备理论基础 1.操作系统的作用: 1)隐藏复杂的硬件接口,提供良好的抽象接口. 2)管理,调度进程,并且将多个进程对硬件的抢夺变得有序 2.多道技术 1)产生背景:针对单核,实现并发 2)空间上的复用:如内存中同时有多道程序 3)时间上的复用:复用一个cpu的时间片,强调:遇到io切,占用cpu的时间过长也切,核心在于切之前将进程的状态保存下载,这样才能保证下次切换回来时能基于上次切走的位置继续运行. PS:现在的cpu一般都是多核的,同样

进程池和线程池 协程 # 33

六眼飞鱼酱① 提交于 2019-11-27 11:13:45
day33进程池和线程池 0.内容回顾 1 """""" 2 """ 3 昨日内容回顾 4 """ 5 6 """ 7 1.TCP服务端实现并发 8 1.将不同的功能尽量拆分成不同的函数 9 拆分出来的功能可以被多个地方使用 10 1.将连续循环和通信循环拆分成不同的函数 11 2.将通信循环做成多线程 12 13 ps: 14 1.端口报错解决策略: 15 server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 16 2.线程并发,在同一个端口下进行 17 进程并发不同端口快速切换,进程需要进行快速回收 18 19 """ 20 21 """ 22 2.GIL(全局解释器锁) 23 1.在CPython解释器才有GIL的概念,不是Python的特点 24 2.GIL也是一把互斥锁,将并发变为串行,牺牲了效率,但是提高了数据的安全性 25 26 ps: 27 1.针对不同的数据 应该使用不同的锁去处理 28 2.自己不要轻易的处理锁的问题 哪怕你知道acquire 和 release 29 当业务逻辑稍微复杂的一点情况下 极容易造成死锁 30 31 CPython中GIL锁的存在是因为Python的内存管理不是线程安全的 32 """ 33 """ 34 3.内存管理 35 1.引用计数:值与变量的绑定关系的个数 36

JS同步和异步的执行机制

落花浮王杯 提交于 2019-11-27 10:57:18
1.所有同步任务都在主线程上执行,形成一个执行栈 2.主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。 3.一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行 4.线程不断重复上面的第三步。 来源: https://www.cnblogs.com/rrrjc/p/11360713.html