• 网络编程之基础篇二


    1. 编程语言的发展:

     机器语言(二进制) 混编语言(指令,命令形式) 高级语言(面向过程/面向对象)

    2. 操作系统的目标: 方便用户使用,低耦合,高可用

        计算机组成: cpu,主板,存储设备,输入设备,输出设备

    3. 并行: 指同一时间点,有多个程序在同时进行

       并发: 指同一时间断内,多个程序都不分先后的依次被执行过

    4. 进程的组成: 代码段,数据段,PCB(进程控制块)

        进程的三个基本状态:

        1)就绪状态: 获得了除CPU之外运行所需要的所有资源

        2)执行状态: 获得了所有资源,处于正在执行的状态

        3)阻塞状态: 因各种原因,导致进程放弃了CPU,进程处于内存中,没有继续执行

        特殊状态:  挂起状态,了解即可, 放弃CPU,也不在内存中.

    5. 操作系统的作用:1.封装了所欲硬件接口,方便用户使用; 2.对计算机内所有资源,

       行统一的调度和分配

    6. 多进程相关概念: 并行,并发,同步,异步,阻塞,非阻塞

       : 早期CPU是单核时,没有并行的概念,只有并发(微观上串行,宏观上并行)

       获取当前进程的pid: os.getpid();  获取当前进程父进程的pid: os.getppid()

       开启子进程的两种方式:

         1)  p=Process( target=函数名, args=(参数1,参数2...) )    当定义的函数不需要参数时,args可以没有

         2) 自定义个类,去继承process

      

    进程的常用方法:

          p.start() 告知操作系统,给开启个子进程.本质调用的p.run()

          p.join() 异步变同步(等待子进程结束,再执行join下的主进程代码)

          p.is_alive() 打印即可,用来判断p进程是否还活着,结果为TrueFalse

          p.terminate() 告知操作系统,结束掉p进程

     进程的常用属性:

          p.name=’xxx’ 用在主程序里if判断下,用来给子进程p来命名的

          p.pid   注意,pid后是不带括号的,用来查询子进程ppid.注意区分os.getpid()

                     p.pid是用在主进程中查ppid,os.getpid()是用来查当前进程的pid

          p.daemon=True p进程设置为守护进程(daemon=后默认是false,即普通进程普通进程是当所有子进程都结束后主进

                程才结束,(此时主进程中的所有代码都已经执行完了,程序会停在最后的空白处,注意和p.join()区分开).

                护进程是指:当主进程结束后子进程便会立即结束.且守护进程不能再创建子进程.注意:p.daemon=True

                须放在p.start()之前才能生效...必考daemon写法

    演示:

    from  multiprocessing  import  Process  导入模块

    n=1000

    def  fun(n):

         print(‘这是第%s’  %  (n) )

         print(‘子进程和主进程的pid分别是:’ , os.getpid() , os.getppid() )

    if __name__ == ‘__main__’:

         n=1

         p=process( target=fun, args=(n,)) 实列个对象,对象目标是fun,args后的东西是给目标fun函数

          传的参数,必须是个元组,参数有多个时以逗号隔开,不需要参数时可不写,当传的参数和子进程

      中的冲突时,以主进程为准. 列中打印的n值为1, 当主不传n,打印的结果为1000

        p.daemon=True 表示把子程p设为守护进程,必须在start,且子进程内不能有开启子进程的代码

        p.start()       告知操作系统开启个进程,内容p中的所有

        p.join()     是让主进程呆在这里,p子进程结束后再往下执行主进程代码  

       p.terminate()   告知操作系统杀死这个p进程

        print(p.is_alive)  查看p进程是否还活着

       p.name=’xxx’  把子进程p命名为xxx

       print( p.name , p.pid , p.daemon ) 分别是用来查看子进程p的名字,pid和是否为守护进程

  • 相关阅读:
    delphi 常用的将窗口置前的函数
    delphi中Message消息的使用方法
    批处理 删除文件
    CDR话单主要字段介绍
    集成学习算法总结----Boosting和Bagging
    Benchmark简介
    脚本中export不起作用的原因分析
    RAID详解[RAID0/RAID1/RAID10/RAID5]
    基于DPI(深度报文解析)的应用识别
    DPI (Deep Packet Inspection) 深度包检测技术
  • 原文地址:https://www.cnblogs.com/quzq/p/9507737.html
Copyright © 2020-2023  润新知