zoukankan      html  css  js  c++  java
  • 多线程的简单演示

    一、前言

      我们知道单核cpu同时只能执行一个任务。如果在一个单核cpu的电脑上,我们可以同时登入qq、听音乐或者写文档等,给我们的感觉它们就是同时在进行的。这是由于cpu的分时技术,使它不断的进行上下文的切换,根据任务的优先级不停的在各个任务间切换执行。而且由于cpu运行太快,我们根本感觉不到它在切换任务,所以就给了我们同时在执行多个任务。

    二、简单的多线程并发

      2.1 创建线程 

    import threading   # 线程模块
    
    
    # 定义每个线程要运行的函数
    def run(n):
        print('task', n)
    
    
    if __name__ == '__main__':
    
        # 生成一个线程实例 , 参数为 元组形式
        t1 = threading.Thread(target=run, args=("t1",))
        # 生成另一个线程实例 , 参数为 元组形式
        t2 = threading.Thread(target=run, args=("t2",))
    
       # 启动线程
        t1.start()
        t2.start()    
    

      2.2 对比运行

      好像运行结果除了同时出来外,没什么特别的,我们稍稍修改一下

      

    import threading
    import time
    
    
    def run(n):
        print('task', n)
        time.sleep(2)
    
    if __name__ == '__main__':
    
        t1 = threading.Thread(target=run, args=("t1",))
        t2 = threading.Thread(target=run, args=("t2",))
        # t1.start()
        # t2.start()
    
        run('t1')
        run('t2')
    

      我们让程序sleep一会,就能很明显看出并发运行的效果了

     三、继承式调用

      上面使用线程方法可以被称为直接调用,而继承式调用需要我们自己写一个类,继承threading.Thread

      方法:

    1. 先定义一个类,继承threading.Thread
    2. 要继承父类的构造函数
    3. 定义一个运行的函数,必须是 run()
    import threading
    import time
    
    
    class MyThread(threading.Thread):
    
        def __init__(self, n):
            super(MyThread, self).__init__()
            self.n = n
    
        def run(self):
            print('task', self.n)
            time.sleep(2)
    
    if __name__ == '__main__':
        t1 = MyThread(1)
        t2 = MyThread(2)
    
        t1.start()
        t2.start()
    

      

  • 相关阅读:
    XTOOL X100 PAD2编程2009 Renault Symbol (Dacia) 所有钥匙丢失
    XTOOL X100 PAD3通过OBD给2014 BMW CAS4 Key编程
    Scania VCI3 SDP3 2.44.1下载免费和安装指南
    VVDI2 V6.7.5 Software Download Free & Install (Update)
    三个步骤解决2m2 magic tank 无法校准HON66钥匙的问题
    VVDI Mini钥匙工具令牌,固件和数据库更新
    kubernetes 认证,授权
    maven 随笔,周末重拾maven
    分布式演进的一点理解
    如何理解持续集成、持续交付、持续部署?
  • 原文地址:https://www.cnblogs.com/bigberg/p/7810955.html
Copyright © 2011-2022 走看看