zoukankan      html  css  js  c++  java
  • python 进程和串行(——)

    进程

    1、什么是串行?

    串行:就是一个程序完完整整的运行完了,下个程序才运行。

    2、什么是进程?

    进程:一个正在运行的程序或一个程序运行的过程。

    为什么要用进程。

    提高程序执行效率。

    多道技术:并发技术的诞生之源

    多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。

    空间上的复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中,占用内存是

    彼此隔离的,而且是物理层面隔离的,遇到io切换,下个程序运行,这样cpu不用等io完,才工作,大大提高了效率

    时间上的复用:多个任务共用一个cpu,一个任务占用cpu时间过长,或者有另外一个优先级更高的任务抢走

    cpu,cpu也在不断的切换的执行,仿并发,效率低。

    总结:多进程不适合,计算密集型

    3、进程两种调用方法。

      

    import time
    
    from multiprocessing import Process
    
    
    def task(x):
        print('%s is running'%x)
        time.sleep(3)
        print('%s is done'%x)
    
    if __name__ == "__main__":为什么要加这个?因为在windows操作系统,复制父进程的内容,是以模块导入的形式,如果不这样写,创建一个子进程,初始复制主进程的内容,会不断的被创建
        #process(target=task,kwargs={'x':'子进程'})
        p = Process(target=task,args=('子进程',))
      #为什么不是子进程先运行, p.start()#只是在操作系统发送一个开启子进程的信号,操作系统要为其开辟一个操作空间,然后父进程初始化子进程,才能运行,时间过度太长,主程序,已经可以运行完了 print('主')

     2.第二中调用方法:

    import time
    
    from multiprocessing import Process
    
    
    class Myprocess(Process):
        def __init__(self,x):
            super().__init__()
            self.name = x
    
        #调用Process的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')
        #不好的是子进程只能开一个
        p.start() #p.run()
        print('主')
    

      

     

      

  • 相关阅读:
    python生成随机整数
    pycharm怎么修改python路径
    Linux 在 TOP 命令中切换内存的显示单位
    MySQL之limit使用
    Fiddler设置抓取FireFox火狐的包
    火狐FireFox看视频不能全屏显示的问题
    【.Net】exe加密/加壳工具.Net Reactor
    【WPF】使用控件MediaElement播放视频
    【WPF】在MenuItem中下划线“_”显示不正常
    【.Net】Thread.Start()与ThreadPool.QueueUserWorkItem()的区别
  • 原文地址:https://www.cnblogs.com/wuheng-123/p/9294883.html
Copyright © 2011-2022 走看看