• 进程与程序 并行 并发 串行 阻塞 join函数


    进程是正在运行的程序,程序是程序员编写的一对代码,也就是一堆字符,当这堆代码被系统加载到内存并执行,就有了进程。

    (需要注意的是:一个程序是可以产生多个程序,就像我们可以同时运行多个QQ程序一样,会形成多个进程)

    并发指的是,多个事件同时发生了(单核状态下就是通过切换+保存状态 就是多道技术
    )                                                                                           并行:真正意义上的同时执行(只在

    多核处理器才有可能出现

    )                                                                                           串行:按照顺序依次执行 第一行执行完毕才会执行第二行,需要注意的是 串行执行的过程中因为计算操作太多 也会导致程序卡住 但是这与io阻塞是不同的io阻塞立马将cpu切换到其他程序  而串行执行一堆计算任务 cpu没有切走

    阻塞与非阻塞指的是程序的状态                                                     

    阻塞状态指的是因为程序遇到了io操作,或者是sleep,导致后续代码不被cpu执行                                                 非阻塞与之相反,表示程序正在被cpu执行                        补充:进程的三种状态                                                       就绪态,运行态,和阻塞态                                                      多道技术会在进程执行时间过程或遇到io时自动切换换其他进程,意味着io操作与进程被剥夺执行都会造成进程无法继续执行                                                                           join函数  :调用start函数后的操作就由操作系统来玩了,至于何时开启进程,进程何时执行,何时结束都与应用程序无关,所以当前程序会继续往下执行,join函数就可以是父进程等待子进程结束后继续执行   

    from multiprocessing import Process
    import time,random

    x=1000

    def task(n):
    print('%s is runing' %n)
    time.sleep(n)

    if __name__ == '__main__':
    start_time=time.time()

    p1=Process(target=task,args=(1,))
    p2=Process(target=task,args=(2,))
    p3=Process(target=task,args=(3,))
    p1.start()
    p2.start()
    p3.start()

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

    print('主',(time.time() - start_time))

    start_time=time.time()
    p_l=[]
    for i in range(1,4):
    p=Process(target=task,args=(i,))
    p_l.append(p)
    p.start()
    for p in p_l:
    p.join()

    print('主',(time.time() - start_time))

                                                                           

  • 相关阅读:
    Sql server 2005 restore failed
    使用Windows Live Writer发布到cnblogs
    IE7 Tab problem
    转: 编码,charset,乱码,unicode,utf8与net简单释义(续)
    移动12.1号动感地带寻宝答案
    转: 各种 lightbox 实现
    Cannot connect windows 2003 server remotely by mstsc
    boost asio 网络编程案例简单改写
    读书笔记之《程序员的自我修养链接、装载与库》
    基于OpenSSL简单实现Shamir基于身份的数字签名算法
  • 原文地址:https://www.cnblogs.com/tangda/p/10490546.html
Copyright © 2020-2023  润新知