• python---线程与进程


    1、进程与线程

      进程:进程是并行,系统进行资源分配的最小单位,进程拥有自己的内存空间,所以进程间资源不共享,开销大。同一进程中所有线程共享资源

      线程:线程是并发,调度执行的最小单位,也叫执行路径,依赖进程的存在而存在,一个进程至少有一个线程,叫主线程。多个线程共享内存(数据共享和全局变量),提升程序的运行效率

    2、多进程与多线程的应用

      多进程:适合cpu密集型(cpu操作指令比较多,如科学计算,位数多的浮点运算)

      多线程:适合IO密集型(读写操作较多的)

      python内的多进程是真的利用多个cpu的,而多线程是伪并发(因为python里有全局锁)

    3、线程调用方式

    import threading
    import time
    
    def delay_1(second):
        print('延迟前')
        time.sleep(second)
        print('延迟{0}s后'.format(second))
    
    delay_1(3)
    delay_1(2)
    print('下面是线程----------')
    t = threading.Thread(target=delay_1,args=(3,))   #target=delay_1,后面跟的是函数名,而不是函数调用,args=(3,)传入的参数
    t.start()  #启动线程
    t2 = threading.Thread(target=delay_1,args=(2,))
    t2.start()
    控制台输出:   #由输出结果可以看出python是从上而下执行的
    延迟前
    延迟3s后
    延迟前
    延迟2s后
    下面是线程----------
    延迟前       #由输出可知t和t1是一起执行的
    延迟前
    延迟2s后
    延迟3s后

    4、进程调用方式:

    import threading
    import time
    from multiprocessing import Process
    
    def delay_1(second):
        print('延迟前')
        time.sleep(second)
        print('延迟{0}s后'.format(second))
    
    delay_1(3)
    delay_1(2)
    print('下面是进程----------')
    p1 =Process(target=delay_1,args=(3,))
    p1.start()
    p1 =Process(target=delay_1,args=(2,))
    p1.start()
    控制台:报错is not going to be frozen to produce an executable.   

    解决办法,进程应该在main函数中运行

    import threading
    import time
    from multiprocessing import Process
    
    def delay_1(second):
        print('延迟前')
        time.sleep(second)
        print('延迟{0}s后'.format(second))
    
    if __name__ == '__main__':
        p1 = Process(target=delay_1, args=(3,))
        p1.start()
        p1 = Process(target=delay_1, args=(2,))
        p1.start()

    5、参考博文:https://blog.csdn.net/liangkaiping0525/article/details/82313034

  • 相关阅读:
    模块-和包
    re模块
    递归函数
    内置函数
    C++ 创建文件的方法
    C++多态的实现条件
    C++常见错误总结
    Http客户端跳转和服务器端跳转的区别
    struts1学习
    Java 核心读书笔记 第11章
  • 原文地址:https://www.cnblogs.com/hzgq/p/11771336.html
Copyright © 2020-2023  润新知