zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    微信小程序、支付宝小程序、H5根据字符串生成相同的二维码
    大文件排序优化实践
    Nginx(五):http反向代理的实现
    Nginx(四):http服务器静态文件查找的实现
    关于大数据技术的一点思考
    Nginx(三):http模块的处理流程解析之正向代理
    基于Prometheus网关的监控完整实现参考
    谈谈mysql和oracle的使用感受 -- 差异
    Nginx(二): worker 进程处理流程框架解析
    退避算法实现之:客户端优雅回调
  • 原文地址:https://www.cnblogs.com/hzgq/p/11771336.html
Copyright © 2011-2022 走看看