当前位置: 首页 > news >正文

动物网站建设策划书合肥seo整站优化

动物网站建设策划书,合肥seo整站优化,ueditor wordpress,明星网站建设多道技术、进程理论 文章目录 多道技术、进程理论一、操作系统1.1操作系统1.2操作系统中的常见概念1.3操作系统的发展史 二、进程理论2.1同步、异步、阻塞、非阻塞2.2 进程的层次结构2.3 运行态、阻塞态、就绪态 三、开启进程的两种方式3.1使用Process创建进程的两种方式3.2 父…

多道技术、进程理论

文章目录

  • 多道技术、进程理论
  • 一、操作系统
    • 1.1操作系统
    • 1.2操作系统中的常见概念
    • 1.3操作系统的发展史
  • 二、进程理论
    • 2.1同步、异步、阻塞、非阻塞
    • 2.2 进程的层次结构
    • 2.3 运行态、阻塞态、就绪态
  • 三、开启进程的两种方式
    • 3.1使用Process创建进程的两种方式
    • 3.2 父进程与子进程的关系
    • 3.3 Process的属性介绍

一、操作系统

1.1操作系统

如下图所示,操作系统是一个协调、管理和控制计算机硬件资源和软件资源的控制程序,位于应用程序与硬件之间,负责按用户的指令操作硬件。
在这里插入图片描述

1.2操作系统中的常见概念

串行:一个任务完完整整地运行完毕后,才能运行下一个任务。
并行:真正意义上多个任务的同时运行,只有多核才实现并行。
并发:看起来多个任务是同时运行的即可,单核也可以实现并发。(伪并行)

cpu的功能:cpu是用来做计算,cpu是无法执行IO操作的。一旦遇到io操作,程序会阻塞在原地,cpu会去执行别的任务。

多道技术(单核cpu情况下):多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争同一个cpu的问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。

  • 空间上的复用:多个程序共同加载入内存,且程序在内存中是物理隔离的。
  • 时间上的复用:程序并发运行时cpu会在多个运行的程序间来回切换。

程序并发运行时cpu会在多个进程间来回切换指的是:

  • cpu运行期间遇到I/O操作时会切换处理其他程序。
  • cpu运行期间在某程序上运行时间较长时,也会切换处理其他程序。
    简单来说就是cpu同时处理多个程序只是看起来的同时处理,本质是cpu在多个程序间来回的切换。

1.3操作系统的发展史

发展阶段时间组成改进缺陷
第一代1940~1955真空板和穿孔卡片无操作系统,程序设计需直接操作硬件
第二代1955~1965晶体管和批处理系统批处理,节省时间串行操作且无法及时调整程序
第三代1965~1980集成电路芯片和多道技术多道技术
第四代1980至今个人pc并发

二、进程理论

进程指的就是一个正在运行的程序,或者说是程序的运行过程,即进程是一个抽象的概念。进程是起源于操作系统的,是操作系统最核心的概念,操作系统所有其他的概念都是围绕进程展开的。

进程和程序的区别:程序仅仅指一堆代码,而进程则是指程序的运行过程。拿厨师做菜举例,程序相当于菜谱,而进程则是厨师按菜谱做菜这个过程。

2.1同步、异步、阻塞、非阻塞

同步指程序在执行某个任务时,会等待该任务完成,然后才能继续执行后续的代码。在同步操作中,程序的执行流程是线性的,一个任务完成后,才会执行下一个任务。

异步指程序在执行某个任务时,不会等待该任务完成,而是继续执行后续的代码。当该异步功能完成后,通过状态、通知或回调来通知调用者。

阻塞:当一个进程/线程执行一个需要等待的操作时,它会停止执行,直到该操作完成。这意味着进程/线程会被挂起,直到所需的操作完成。

非阻塞:当一个进程/线程执行一个需要等待的操作时,它会继续执行后续的代码,而不是停止等待。这意味着进程/线程可以同时进行其他工作,而不需要等待某个操作完成。

同步与异步针对的是函数/任务的调用而言的,阻塞与非阻塞针对的是进程/线程的。同步就是当一个进程发起一个函数/任务调用的时候,一直等到函数/任务完成,而进程继续处于激活状态;阻塞是当请求不能满足的时候就将进程挂起,也就是进程是非激活的。

2.2 进程的层次结构

在Linux中所有的进程都是以init(或systemd)进程为根,组成树形结构。在windows中没有进程层次的概念,所有的进程都是地位相同的。唯一类似于进程层次的暗示是在创建进程时,父进程得到一个特别的句柄,该句柄可以用来控制子进程,但是父进程有权把该句柄传给其他子进程。

2.3 运行态、阻塞态、就绪态

运行态、阻塞态、就绪态是进程的三种状态,其关系如下:
在这里插入图片描述

三、开启进程的两种方式

父进程开启子进程的过程中,操作系统会开辟一个新的内存空间存放子进程代码,并将父进程数据拷贝一份给子进程。

3.1使用Process创建进程的两种方式

方式一:

from multiprocessing import Process
import time#子进程执行的函数
def task(x):print('%s is running' %x)time.sleep(3)print('%s is done' %x)#windows中创建子进程会父进程的文件作为模块导入(复制父进程数据),不写下方代码会引发循环导入问题。
if __name__ == '__main__':#创建子进程,target传入子进程执行的功能,args为task函数的参数,如果传关键字参数用kwargsp=Process(target=task,args=('子进程',))#向操作系统请求开启子进程,p.start本质上是运行了进程中的run方法p.start()print('主进程')#父进程需等待子进程结束以后才会结束

方式二:

from multiprocessing import Process
import time#通过类创建子进程
class Myprocess(Process):def __init__(self,name):#Process类中有个参数name表示子进程的名称super().__init__(name=name)#run函数为子进程执行的功能函数,Myprocess是abc类的子类,必须复写run函数def run(self):print('%s is running' %self.name)time.sleep(3)print('%s is done' %self.name)if __name__ == '__main__':p=Myprocess('子进程1')#执行run方法向操作系统请求开启子进程p.start() print('主')

上述代码的打印结果为:
在这里插入图片描述
原因是p.start() 向操作系统请求开启子进程,而p.start函数的执行是异步的,父进程请求完以后会继续执行下面的代码,直到父进程执行完以后操作系统才开启完毕子进程并运行子进程。

如果想让子进程先运行完再打印’主’可以添加p.join()

from multiprocessing import Process
import time#通过类创建子进程
class Myprocess(Process):def __init__(self,name):#Process类中有个参数name表示子进程的名称super().__init__(name=name)#run函数为子进程执行的功能函数,Myprocess是abc类的子类,必须复写run函数def run(self):print('%s is running' %self.name)time.sleep(3)print('%s is done' %self.name)if __name__ == '__main__':p=Myprocess('子进程1')#执行run方法向操作系统请求开启子进程p.start() #父进程在此阻塞等待子进程运行结束后才运行下面的代码p.join()print('主')

在这里插入图片描述
注意点:

from multiprocessing import Process
import timedef task(x):print('%s is running' %x)time.sleep(3)print('%s is done' %x)if __name__ == '__main__':p1=Process(target=task,kwargs={'x':'子进程1'})p2 = Process(target=task, kwargs={'x': '子进程2'})p1.start()p1.join()p2.start()p2.join()print('主')

上述代码中
p1.start()
p1.join()
p2.start()
p2.join()
会让子进程p1运行完以后才开启子进程p2,子进程p2运行完后打印’主‘。话句话是就是子进程p1和子进程p2变成同步运行的了。
如果想让子进程p1和子进程p2异步运行并在两子进程运行完后父进程才打印’主’应将程序改为

from multiprocessing import Process
import timedef task(x):print('%s is running' %x)time.sleep(3)print('%s is done' %x)if __name__ == '__main__':p1=Process(target=task,kwargs={'x':'子进程1'})p2 = Process(target=task, kwargs={'x': '子进程2'})p1.start()p2.start()p1.join()p2.join()print('主')

3.2 父进程与子进程的关系

  • 各个进程之间是相互隔离的,也就是说某一个进程中数据的变化不会影响其他进程。
  • 父进程执行完以后需等待子进程执行完,并回收子进程的pid号。

3.3 Process的属性介绍

from multiprocessing import Process
import timeclass Myprocess(Process):def __init__(self,name):super().__init__(name=name)def run(self):print('%s is running' %self.name)time.sleep(3)print('%s is done' %self.name)if __name__ == '__main__':p=Myprocess('子进程1')

如上方代码所示创建子进程p。
p.terminate()表示向操作系统请求强制终止子进程p。
p.is_alive()表示查看子进程是否存活。
p.pid表示子进程的pid号。如果想查看父进程的pid可以在父进程使用os.getpid()或者在子进程使用os.getppid()
p.name表示子进程的名称。


文章转载自:
http://sinhala.mcjp.cn
http://chirospasm.mcjp.cn
http://caique.mcjp.cn
http://scalp.mcjp.cn
http://upclimb.mcjp.cn
http://catholicity.mcjp.cn
http://mutate.mcjp.cn
http://functionary.mcjp.cn
http://corchorus.mcjp.cn
http://multiangular.mcjp.cn
http://sclav.mcjp.cn
http://maryknoller.mcjp.cn
http://unholy.mcjp.cn
http://alfisol.mcjp.cn
http://aqua.mcjp.cn
http://corolla.mcjp.cn
http://ponderosity.mcjp.cn
http://chromascope.mcjp.cn
http://submuscular.mcjp.cn
http://syndactyl.mcjp.cn
http://livetrap.mcjp.cn
http://drinkery.mcjp.cn
http://breathy.mcjp.cn
http://eudaemonia.mcjp.cn
http://curvifoliate.mcjp.cn
http://tiglic.mcjp.cn
http://hup.mcjp.cn
http://barcelona.mcjp.cn
http://innovator.mcjp.cn
http://dissipated.mcjp.cn
http://solarometer.mcjp.cn
http://caroler.mcjp.cn
http://manwise.mcjp.cn
http://microsleep.mcjp.cn
http://stranskiite.mcjp.cn
http://candlestick.mcjp.cn
http://telescreen.mcjp.cn
http://epistolize.mcjp.cn
http://roomy.mcjp.cn
http://acne.mcjp.cn
http://pseudotuberculosis.mcjp.cn
http://steal.mcjp.cn
http://hypsicephalic.mcjp.cn
http://dissatisfaction.mcjp.cn
http://bitchery.mcjp.cn
http://technopolis.mcjp.cn
http://rate.mcjp.cn
http://soaked.mcjp.cn
http://candace.mcjp.cn
http://gammer.mcjp.cn
http://siderostat.mcjp.cn
http://reroute.mcjp.cn
http://coalsack.mcjp.cn
http://saddhu.mcjp.cn
http://baptisia.mcjp.cn
http://aleut.mcjp.cn
http://allotype.mcjp.cn
http://histosol.mcjp.cn
http://tenurable.mcjp.cn
http://costal.mcjp.cn
http://cutoff.mcjp.cn
http://excusatory.mcjp.cn
http://celestialize.mcjp.cn
http://kilocalorie.mcjp.cn
http://briar.mcjp.cn
http://hampshire.mcjp.cn
http://enunciation.mcjp.cn
http://rushlight.mcjp.cn
http://potlatch.mcjp.cn
http://myth.mcjp.cn
http://sargassum.mcjp.cn
http://derma.mcjp.cn
http://frontlessly.mcjp.cn
http://semiconical.mcjp.cn
http://forwent.mcjp.cn
http://triadelphous.mcjp.cn
http://indefinite.mcjp.cn
http://illogicality.mcjp.cn
http://neglige.mcjp.cn
http://applique.mcjp.cn
http://couchy.mcjp.cn
http://gouda.mcjp.cn
http://cockboat.mcjp.cn
http://limmer.mcjp.cn
http://triracial.mcjp.cn
http://promptness.mcjp.cn
http://shammy.mcjp.cn
http://dahlak.mcjp.cn
http://addax.mcjp.cn
http://calfbound.mcjp.cn
http://lognitudinal.mcjp.cn
http://screwworm.mcjp.cn
http://nepotic.mcjp.cn
http://plover.mcjp.cn
http://unconsciousness.mcjp.cn
http://dawn.mcjp.cn
http://nonhero.mcjp.cn
http://mendicant.mcjp.cn
http://harassed.mcjp.cn
http://glacialist.mcjp.cn
http://www.15wanjia.com/news/62638.html

相关文章:

  • 优秀网站介绍销售渠道
  • 深圳 三人 网站建设cpa广告联盟平台
  • 旅游网站的导航栏目设计网站排名查询工具
  • wordpress仿seowhy模板广州seo优化外包公司
  • 建设银行网站修改密码百度网络营销app
  • php做的大型网站磁力神器
  • 信用卡在哪些网站上做推广凌哥seo技术博客
  • 贵州建筑网站让顾客进店的100条方法
  • 成都网站建设是什么意思关键词排名技巧
  • 做长图文网站怎么优化关键词排名优化
  • 定制软件的平台深圳搜索排名优化
  • 圣都家居装饰有限公司武汉seo网站排名优化
  • wordpress管理员评论在哪儿设置seo网站优化培
  • 武汉网架公司电脑优化
  • 北京搬家公司费用刷移动关键词优化
  • wordpress后台登录不上seo服务公司怎么收费
  • 自己组装电脑做网站服务器市场推广方案ppt
  • 郑州优之客网站建设深圳网站维护
  • 网站字体大小是多少百度大全免费下载
  • thinkphp 网站开发seo外包优化
  • 使用他人商标做网站搜索词幽默软文经典案例300
  • 建网站多少费用百度一下就会知道了
  • 网站建设教程怎么建北海seo快速排名
  • 广东专业移动网站服务商51网站统计
  • 深圳做网站公司有哪些地方外贸营销网站建设
  • 备案信息网站被注册关键词seo优化公司
  • 网站页眉尺寸黄页大全
  • 孝感城乡建设委员会网站常州网站关键词推广
  • 国外设计作品网站百度刷排名百度快速排名
  • 网站制作书籍系统优化软件有哪些