zoukankan      html  css  js  c++  java
  • 初识并发编程

    操作系统简单介绍

    多道技术:

      空间复用:把许多进程都放入内存中,等待操作系统操作

      时间复用:在内存中一个程序中有io阻塞程序,操作系统会在程序阻塞时,执行其他的程序

    进程之间是空间隔离的

    并发

      伪并行,看着像同时运行,其实是任务之间的切换(遇到io切换的会提高代码效率) ,任务切换+保存状态(保存现场)

    并行

      真正的同时在运行,应用的是多核技术(多个cpu)

     

    进程三状态:就绪(等待操作系统调度去cpu里面执行)  执行  阻塞 

     

    提交任务的方式:同步异步   任务的执行状态:阻塞非阻塞

    异步:任务的提交方式,多个任务提交出去,同时执行

     :

    异步非阻塞:

      多个任务同时提交,并且在程序运行的时候没有阻塞

    进程的两种创建方式

    1)

    Process(    target=f1,  args=(i,) (  或者  kwargs={‘形参名为key:值}  )      )

    from multiprocessing import Process
    
    def f1(n):
        print(n)
    
    if __name__ == '__main__':
        # p1 = Process(target=f1,args=('钢铁侠',)) #创建进程对象
        p1 = Process(target=f1,kwargs={'n':'钢铁侠'}) #创建进程对象
        p1.start() 

     2)

    from multiprocessing import Process
    
    class MyProcess(Process):
    
        def __init__(self,n):
            super().__init__()  #别忘了执行父类的init
            self.n = n
    
        def run(self):
            print('宝宝and%s'%self.n)
    
    if __name__ == '__main__':
        p1 = MyProcess('苍老师')
        p1.start()             

    Join方法

      主进程等待子进程执行结束再继续执行

    import time
    from multiprocessing import Process
    
    def f1():
        time.sleep(2)
        print('xxxx')
    
    def f2():
        time.sleep(2)
        print('ssss')
    
    if __name__ == '__main__':
        p1 = Process(target=f1,)
        p1.start()
        p1.join()  # 主进程等待子进程运行完才继续执行
        print('开始p2拉')
    
        p2 = Process(target=f2,)
        p2.start()
        p2.join()
        print('我要等我的子进程...')
        print('我是主进程')

    for 循环开启进程

    import time
    from multiprocessing import Process
    
    def f1(i):
        time.sleep(3)
        print(i)
    
    if __name__ == '__main__':
        for i in range(20):
            p1 = Process(target=f1,args=(i,))
            p1.start()
  • 相关阅读:
    VS Code 的常用快捷键
    oj教程--坑
    oj教程--学习顺序
    oj教程--链表
    oj教程--队列
    oj教程--栈
    【MySQL】汇总数据
    【MySQL】使用WHERE子句
    【MySQL】SELECT语句
    【MySQL】使用MySQL(连接、选择数据库、显示数据库和表信息)
  • 原文地址:https://www.cnblogs.com/fu-1111/p/10241621.html
Copyright © 2011-2022 走看看