zoukankan      html  css  js  c++  java
  • 网络编程基础【day10】:多线程效果演示(二)

    本节内容

    1、引子

    2、并发多线程效果演示

    一、引子

      我们说单核的cpu只能同时执行一个任务,但是给我们的一个幻觉是可以执行多个,因为cpu太快了。它是怎么实现的呢?就是上下文切换,它不是轮询着切换的。它是按照优先级来切换的,并不是从头到尾的,中间的切换是有优先级的。我们就可以利用这个优势,因为它太快了,但是我们只打开了一个QQ,启动一个线程的话,他能得到执行的时间就是有限的。那cpu给我们的感觉同时执行多个任务,那我就可以并发批量操作某个动作。

    二、并发多线程效果演示  

    2.1、创建线程

    说明:我们通过threading.Thread模块去创建线程

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import threading
     
    def run(n):
        print("task:",n)
     
    t1 = threading.Thread(target=run,args=("t1",))   #args后面1个参数也要加逗号,要不然会把它当做一个参数,实际它是一个元组
    t2 = threading.Thread(target=run,args=("t2",))
     
    t1.start()   #启动线程
    t2.start()

    那有的同学就说了,你这样达到并发的效果了,压根就没看出来啊,跟我下面这种情况有什么区别呐?请看如下代码:

    1
    2
    3
    4
    5
    def run(n):
        print("task:",n)
     
    run("t1")
    run("t2")

    没有错,是没有看出什么来,那我们就来改进一下,加一个时间模块(time),再来看看效果。

    2.2、验证并发效果

    说明:我们来添加一个时间模块,再来看看效果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import threading,time
     
    def run(n):
        print("task:",n)
        time.sleep(2)
     
    t1 = threading.Thread(target=run,args=("t1",))
    t2 = threading.Thread(target=run,args=("t2",))
     
    t1.start()
    t2.start()

    第二种代码改写如下:

    1
    2
    3
    4
    5
    6
    7
    8
    import time
     
    def run(n):
        print("task:",n)
        time.sleep(2)
     
    run("t1")
    run("t2")

    通过实验:很明显第一种情况实现并发效果,一个等待了2秒中就结束了,因为并发,两个线程同时等待了2秒,但是第二种情况有间隔。

  • 相关阅读:
    1202诗人基本介绍&诗人画像
    1205人物关系优化&诗人轨迹
    把SQL Server 2000 表中的自动编号Id重新开始排列
    一个一直都不明白的东西今天知道了。关于sqlserver2000自动执行。
    服装打版界的扛把子ET自定义操作
    手把手教你搭建集中式版本控制系统SVN服务器
    分享一次实用的爬虫经验
    盘点CSV文件在Excel中打开后乱码问题的两种处理方法
    盘点服装设计所经常性使用的软件ET(下篇)
    sql 每个企业选择一条产品
  • 原文地址:https://www.cnblogs.com/luoahong/p/9897061.html
Copyright © 2011-2022 走看看