zoukankan      html  css  js  c++  java
  • 进程基础

    1:操作系统

      多道操作系统

        有多个程序在操作系统中运行

        当一个程序遇到IO操作的时候就把CPU让出来给其他程序使用

      分时操作系统

        时间片

        不是遇到IO操作时让出CPU,而是时间到了就让出CPU

        切换程序需要时间,单纯的分时系统没有提高CPU的利用率,但是提高了用户的使用体验

      实时系统

      个人计算机操作系统

      分布式操作系统

    2:进程基础

      进程 Process id  = pid

      程序,进程   进程就是运行中的程序

      pycharm pid :pid 是全系统中唯一对某个进程的标识:

         并且随着程序的重启,pid是会改变的

      进程是操作系统中最小的资源分配单位

      进程与进程之间的数据是隔离的 

      进程调度:

        先来先服务 FCFS

        短作业优先算法

        时间片轮转法

        多级反馈队列 算法

      同步:一个程序执行完毕再执行下一个程序

      异步:同时执行多个程序

      同步阻塞:不能充分利用CPU

      异步阻塞:过度利用CPU

      IO多路复用 :比较完善的在网络编程中的解决方案

    3:启用进程:

      

    import os
    import time
    import multiprocessing
    
    def count():
        for i in range(10):
            time.sleep(0.5)
            print('子进程',os.getpid(),os.getppid())
    if __name__ == '__main__':  #只是在windows上必须写
        print('主进程',os.getpid(),os.getppid())
        p = multiprocessing.Process(target=count).start()
        for i in range(10):
            time.sleep(0.3)
            print('*'*i)
    

      给子进程传参:

      

    import os
    import time
    import multiprocessing
    def count(arg):
        for i in range(10):
            time.sleep(0.5)
            print('子进程%s'%arg,os.getppid(),os.getppid())
    if __name__ == '__main__':
        print('主进程',os.getpid(),os.getppid())
        p = multiprocessing.Process(target=count,args=(123456,)).start()
        for i in range(10):
            time.sleep(0.3)
            print('*'*i)
    

      进程之间的数据隔离的

      

    import os
    import time
    import multiprocessing
    number = 100
    def count():
        global number
        for i in range(100):
            time.sleep(0.1)
            number -= 1
            print('子进程:',number)
    if __name__ == '__main__':
        print('主进程',os.getpid(),os.getpid())
        p = multiprocessing.Process(target=count).start()
        # time.sleep(2)
        # print('主进程:',number)
        for i in range(100):
            time.sleep(0.2)
            print('主进程:',number)
    

      启用多个进程

    import os
    import multiprocessing
    def count(arg):
        print('子进程%s:'%arg,os.getpid(),os.getppid())
    if __name__ == '__main__':
        for i in range(10):
            p = multiprocessing.Process(target=count,args=(i,)).start()
    

      子进程与父进程之间的关系

      

    import os
    import time
    import multiprocessing
    def count(arg):
        print('子进程%s:'%arg,os.getpid(),os.getppid())
        time.sleep(5)
        print('子进程end')
    if __name__ == '__main__':
        for i in range(10):
            p = multiprocessing.Process(target=count,args=(i,)).start()
        print('父进程**********')
    

      1.父进程与子进程的启动时异步的

      父进程只负责通知操作系统启动子进程

      接下来的工作有操作系统接手,父进程继续运行

      2.父进程执行完毕之后并不会直接结束程序

      而是等待所有的子进程都执行完毕之后才结束]

      父进程要负责回收子进程的资源

  • 相关阅读:
    Nginx+Tomcat 集群部署
    Android5.0新特性——CardView 使用
    Android-SQLite版本问题
    Android UI ListView的使用
    Android
    Android四大组件之Activity一(组件的概念、Intent、监听)
    JAVA内部类使用
    Android 第一个程序 及 环境搭配
    Android-AsyncTask异步任务(获取手机联系人)
    Android-Application
  • 原文地址:https://www.cnblogs.com/lijinming110/p/9669692.html
Copyright © 2011-2022 走看看