• 并发编程之进程理论及应用等相关内容-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())

     

  • 相关阅读:
    使用 gpg 加密文件
    CodeIgniter-Lottery
    使用phpize安装php扩展
    myWaterfall
    一台电脑上的git同时使用两个github账户
    移动端上传照片 预览+Draw on Canvas's Demo(解决 iOS 等设备照片旋转 90 度的 bug)
    移动端禁止页面下滑
    移动端用js与jquery实时监听输入框值的改动
    不管人生怎么走,都需要实时回头看看
    Shader 入门笔记(二) CPU和GPU之间的通信,渲染流水线
  • 原文地址:https://www.cnblogs.com/usherwang/p/13535861.html
Copyright © 2020-2023  润新知