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

  • 相关阅读:
    .NET创建WebService服务简单的例子
    SVN服务器搭建
    Visual Studio 2017 系统发布部署服务器教程
    C#进阶--WebApi异常处理机制
    利用iis虚拟目录实现文件服务器功能(分布式存储)
    jQuery 选择器
    jQuery 简介
    从「闭包」到 思考人生
    跨域
    ajax 和 mock 数据
  • 原文地址:https://www.cnblogs.com/hzgq/p/11771336.html
Copyright © 2011-2022 走看看