zoukankan      html  css  js  c++  java
  • 并发编程之进程理论及应用等相关内容-36

    1.进程理论

    #1、什么是进程
    进程是一个程序运行的过程

    #2、什么是程序
    程序就是一堆代码文件

    #3、串行、并发、并行
    串行:多个任务依次运行,一个运行完毕再运行下一个
    并行:多个任务是真的在同时运行,只有多个cpu才有并行的概念
    并发:多个任务看起来是在同时运行

    #4、进程的创建
    windows:CreateProcess
    linux:fork

    #5、进程的终止
    1. 正常退出
    5. 被其他进程杀死(taskill /F /PID 3333)

    #6、程序运行的三种状态
    运行态
    就绪态
    阻塞态

    优化程序效率的核心法则:降低IO操作(硬盘IO、网络IO)

    内存》本地硬盘-》网络IO

    #7、
    进程运行的三种状态:(运行态、就绪态)非阻塞态、阻塞态
    调用任务的两种方式:同步调用、异步调用

    2.进程应用

    # import os
    # import time
    #
    # print(os.getpid())
    # time.sleep(1000)

    # 开启进程的方式一:
    # import time
    # import os
    # from multiprocessing import Process
    #
    #
    # def task(n, tag):
    #     print("%s is running" % tag)
    #     time.sleep(3)
    #     print("%s is done" % tag)
    #
    #
    # if __name__ == '__main__':
    #     p1 = Process(target=task, args=(5, "子进程1"))
    #     p2 = Process(target=task, args=(3, "子进程2"))
    #     p3 = Process(target=task, args=(2, "子进程3"))
    #     p1.start()
    #     p2.start()
    #     p3.start()
    #     print("主:%s。。。" % os.getpid())

    # 开启进程的方式二:
    import time
    import os
    from multiprocessing import Process

    class Myprocess(Process):
       def __init__(self,tag):
           super().__init__()
           self.tag = tag

       def run(self) -> None:
           print("%s is running" % self.tag)
           time.sleep(3)
           print("%s is done" % self.tag)




    if __name__ == '__main__':
       p1 = Myprocess("进程1")
       p2 = Myprocess("进程2")
       p3 = Myprocess("进程3")
       p1.start()  # p1.run()
       p2.start()  # p2.run()
       p3.start()  # p3.run()
       print("主:%s。。。" % os.getpid())

    3.join方法

    import time
    import os
    from multiprocessing import Process


    def task(n, tag):
       print("%s is running" % tag)
       time.sleep(n)
       print("%s is done" % tag)


    if __name__ == '__main__':
       p1 = Process(target=task, args=(3, "子进程1"))
       p2 = Process(target=task, args=(4, "子进程2"))
       p3 = Process(target=task, args=(5, "子进程3"))

       # start=time.time()
       p1.start()
       p2.start()
       p3.start()

       p1.join()
       # p3.join()
       # p2.join()

       print(p1.pid)
       print(p2.pid)
       print(p3.pid)


       # print(time.time() - start)
       print("主:%s。。。" % os.getpid())

     

  • 相关阅读:
    Spring MVC 迁移项目搭建运行
    linux 安装 nginx
    linux 安装 redis
    linux 安装 jdk
    存储过程之游标插入数据
    存储过程之基础语法
    AES加密解密,自定义加密规则记录
    idea破解记录
    Mysql-explain之Using temporary和Using filesort解决方案
    C#多线程学习笔记(朝夕eleven) Task启动方式、Task阻塞、Task.Delay()、多线程异常处理、任务取消、多线程的临时变量、共享数据的lock、Task返回值
  • 原文地址:https://www.cnblogs.com/usherwang/p/13535861.html
Copyright © 2011-2022 走看看