zoukankan      html  css  js  c++  java
  • 线程vs进程,多线程实例

    进程VS线程

    功能

    • 进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ
    • 线程,能够完成多任务,比如 一个QQ中的多个聊天窗口

    定义的不同

    • 进程是系统进行资源分配最小单元.

    • 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序执行的需要的cpu资源),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源(主要是内存资源).

    区别

    • 一个程序至少有一个进程,一个进程至少有一个线程.

    • 线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高。

    • 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率

    • 线程不能够独立执行,必须依存在进程中

    优缺点

    线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。

    多线程-threading

    python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用

    说明

    1. 可以明显看出使用了多线程并发的操作,花费时间要短很多
    2. 创建好的线程,需要调用start()方法来启动

     主线程会等待所有的子线程结束后才结束

    一个多线程实例理解多线程, 查看线程数量

    #coding=utf-8
    import threading
    from time import sleep,ctime
    
    
    def sing():
        for i in range(3):
            print("正在唱歌...%d"%i)
            sleep(1)
    
    
    def dance():
        for i in range(3):
            print("正在跳舞...%d"%i)
            sleep(1)
    
    if __name__ == '__main__':
        print('---开始---:%s'%ctime())
    
        t1 = threading.Thread(target=sing)
        t2 = threading.Thread(target=dance)
    
        t1.start()
        t2.start()
    
        while True:
            length = len(threading.enumerate())
            print('当前运行的线程数为:%d'%length)
            if length<=1:
                break
    
            sleep(0.5)

    打印结果

    ---开始---:Wed Nov  8 11:42:41 2017
    正在唱歌...0
    当前运行的线程数为:3
    正在跳舞...0
    当前运行的线程数为:3
    当前运行的线程数为:3
    正在唱歌...1
    正在跳舞...1
    当前运行的线程数为:3
    正在唱歌...2
    正在跳舞...2
    当前运行的线程数为:3
    当前运行的线程数为:3
    当前运行的线程数为:1
    
    Process finished with exit code 0
    LESS IS MORE !
  • 相关阅读:
    mongodb 的云数据库产品 mlab 的使用
    koa 项目实战(十一)验证登录和注册的 input
    koa 项目实战(十)使用 validator 验证表单
    koa 项目实战(九)passport验证token
    koa 项目实战(八)生成token
    koa 项目实战(七)登录接口
    koa 项目实战(六)注册接口加密
    koa 项目实战(五)全球公用头像的使用
    [C++] 用Xcode来写C++程序[4] 函数
    [控件] 将字符串转换成贝塞尔曲线并执行动画
  • 原文地址:https://www.cnblogs.com/maxiaohei/p/7803310.html
Copyright © 2011-2022 走看看