
网络以及线程 进程 协程
文章平均质量分 83
锁 信号量 进程 队列 生产者消费者模型
回头科科
python在线学习
展开
-
协程基础了解
目录一.概念协程是啥协程和线程差异二.协程介绍三.Greenlet模块四.Gevent模块一.概念之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。随着我们对于效率的追求不断提高,基于单线程来实现并发又成为一个新的课题,即只用一个主线程(.原创 2022-04-12 22:56:58 · 693 阅读 · 0 评论 -
线程基础(2) 锁 信号量 队列
一.锁当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁。互斥锁为资源引入一个状态:锁定/非锁定某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,将资源的状态变成“非锁定”,其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。threading模块中定义了Lock类,可以方便的处理锁定:impo原创 2022-04-12 11:29:45 · 270 阅读 · 0 评论 -
线程基础 (1)
一.线程概念进程:之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。这是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。有了进原创 2022-04-11 20:23:33 · 210 阅读 · 0 评论 -
进程池和multiprocess.Pool模块
为什么要有进程池?进程池的概念。在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗时间,销毁进程也需要消耗时间。第二即便开启了成千上万的进程,操作系统也不能让他们同时执行,这样反而会影响程序的效率。因此我们不能无限制的根据任务开启或者结束进程。那么我们要怎么做呢?在这里,要给大家介绍一个进程池的概念,定义一个池子,在里面放上固定数量的进程,有需求来了,就拿一个池中的进程来处理原创 2022-04-11 11:50:49 · 239 阅读 · 0 评论 -
进程之间的数据共享
展望未来,基于消息传递的并发编程是大势所趋即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布式系统中。但进程间应该尽量避免通信,即便需要通信,也应该选择进程安全的工具来避免加锁带来的问题。以后我们会尝试使用数据库来解决现在进程之间的数据共享问题。from multiprocessing import Manager,Process,Lockdef work(d,lock): wi.原创 2022-04-11 11:12:12 · 946 阅读 · 0 评论 -
JoinableQueue队列实现消费之生产者模型
方法介绍JoinableQueue([maxsize])创建可连接的共享进程队列。这就像是一个Queue对象,但队列允许项目的使用者通知生产者项目已经被成功处理。通知进程是使用共享的信号和条件变量来实现的。JoinableQueue的实例p除了与Queue对象相同的方法之外,还具有以下方法:q.task_done() 使用者使用此方法发出信号,表示q.get()返回的项目已经被处理。如果调用此方法的次数大于从队列中删除的项目数量,将引发ValueError异常。用于消费者,是指每消费队列原创 2022-04-11 10:57:23 · 360 阅读 · 0 评论 -
生产者消费者模型
在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。为什么要使用生产者和消费者模式在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这个问题于是引入了生产者和消费者模式。什么是生产者消费者模式生产者消费者模式是通过原创 2022-04-10 20:39:52 · 95 阅读 · 0 评论 -
进程中的操作
一.锁我们实现了程序的异步,让多个任务可以同时在几个进程中并发处理,他们之间的运行没有顺序,一旦开启也不受我们控制。尽管并发编程让我们能更加充分的利用IO资源,但是也给我们带来了新的问题。当多个进程使用同一份数据资源的时候,就会引发数据安全或顺序混乱问题。进程锁: 也是为了控制同一操作系统中多个进程访问一个共享资源,只是因为程序的独立性,各个进程是无法控制其他进程对资源的访问的,但是可以使用本地系统的信号量控制(操作系统基本知识)。os.getpid () Python中的method用于获取原创 2022-04-10 19:25:40 · 1009 阅读 · 0 评论 -
python程序中的进程操作
我们已经了解了,运行中的程序就是一个进程。所有的进程都是通过它的父进程来创建的。因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程。多个进程可以实现并发效果,也就是说,当我们的程序中存在多个进程的时候,在某些时候,就会让程序的执行速度变快。以我们之前所学的知识,并不能实现创建进程这个功能,所以我们就需要借助python中强大的模块。目录一. multiprocess模块代码:方法介绍:属性介绍:在windows中使用process模块的注意事项二.使原创 2022-04-10 11:42:56 · 954 阅读 · 0 评论 -
什么是·进程?
目录一.概念1.1.进程的特征1.2进程与程序中的区别二.进程调度2.1先来先服务调度算法2.2短作业优先调度算法2.3时间片轮转法2.4多级反馈队列三.进程的并行与并发四.同步异步阻塞非阻塞4.1同步和异步4.2阻塞与非阻塞4.3同步/异步与阻塞/非阻塞一.概念进程是一个动态的概念。 是指正在执的程序。是程序执行过程中的一次指令,数据集等的集合。也可以叫做程序的一次执行过程。 是计算机中的程序关于某数据集合上的一次运行活动,是系.原创 2022-04-09 20:38:15 · 560 阅读 · 0 评论 -
多任务了解基础
一.操作系统发展史早期的计算机是以计算为核心的。 现在的计算机是以存储为核心的。 第一代计算机:电子管计算机:及其耗电,体积庞大,散热量特别高 第二代计算机:晶体管计算机: 轻便,且运算速度比较快,达到每秒几十万次 第三代计算机:白色大头计算机-集成电路计算机,一个PCB上固化几十到上百个小硬件 第四代计算机:大型集成电路计算机:一个板子上可以达到固化十万个硬件。 第五代计算机:超大型集成电路计算机语言发展史:计算机识别的是二进制,机器语言 汇编语言 高级语言: 面向过程语言 (原创 2022-04-09 16:02:42 · 222 阅读 · 0 评论 -
网络编程1
目录一.套接字(socket)的初使用二.基于TCP协议的socket三.TCP通信模型与UDP通信模型3.1TCP通信模型3.2UDP通信模型四.TCP代码编写五.基于UDP协议的socket六.公共用途的套接字函数七.python_控制台输出带颜色的文字方法一.套接字(socket)的初使用socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基..原创 2022-04-08 21:19:20 · 120 阅读 · 0 评论 -
TCP协议和UDP协议
广域网与路由器路由器路由器(Router),是连接因特网中各局域网、广域网的设备 它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。 路由器是互联网络的枢纽,"交通警察"。 目前路由器已经广泛应用于各行各业,各种不同档次的产品已成为实现各种骨干网内部连接、骨干网间互联和骨干网与互联网互联互通业务的主力军。 路由和交换机之间的主要区别就是交换机发生在OSI参考模型第二层(数据链路层),而路由发生在第三层,即网络层。这一区别决定了路由和交换机在移动信息的过程中需使用不同的原创 2022-04-07 21:23:35 · 9417 阅读 · 0 评论 -
计算机网络发展及相关概念
网络是什么?计算机之间如何通信?早期:以联机进行通信以太网 : 局域网与交换机一软件开发的架构我们了解的涉及到两个程序之间通讯的应用大致可以分为两种:第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构(1)C/S架构C/S即:Client与Server ,中文意思:客户端与服务器端架构 这种架原创 2022-04-04 21:46:30 · 1259 阅读 · 0 评论