zoukankan      html  css  js  c++  java
  • 多任务-python实现-Thread的基本使用(2.1.1)

    @

    1.多任务的概念

    “多任务工作”指的是当前很普遍的工作状态,一个人同时处理多件事情,比如以下这个常见的画面:写一会报告,刷一下网页,查一下资料,收一下邮件,回去做一下数据,点开微信回应一下,再回去贴图表……诸如此类。今天这个时代,专注在一件事情上,已经近乎不可能了。每个人手上都有一大堆任务,同时开着Word、Excel、PPT,微信和QQ总是同时闪动好几个头像……似乎,不能同时处理这些事情,就是能力不够。
    在这里插入图片描述

    2.线程

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

    import threading
    import time
    
    #子线程
    def saySorry():
        print("你好")
        time.sleep(1)
    
    
    #主线程
    if __name__ == '__main__':
        for i in  range(6):
            t=threading.Thread(target=saySorry())
            t.start()
    

    查看当前有多少线程正在运行

    import threading
    import time
    
    #子线程
    def thread1():
        for i in range(5):
            print("你好 %d"% i )
            time.sleep(1)
    
    
    def thread2():
        for i in range(10):
            print("你好__%d"% i )
            time.sleep(1)
    
    
    
    #主线程
    if __name__ == '__main__':
        t1 = threading.Thread(target=thread1())
        t2 = threading.Thread(target=thread2())
        t1.start()
        t2.start()
    
        while True:
            length = len(threading.enumerate())
            print("当前的therad数目为%d" % length)
    
            if length<= 1:
                break
    
            time.sleep(0.5)
    

    菜鸟教程thread模块

    #!/usr/bin/python3
    
    import _thread
    import time
    
    # 为线程定义一个函数
    def print_time( threadName, delay):
       count = 0
       while count < 5:
          time.sleep(delay)
          count += 1
          print ("%s: %s" % ( threadName, time.ctime(time.time()) ))
    
    # 创建两个线程
    try:
       _thread.start_new_thread( print_time, ("Thread-1", 2, ) )
       _thread.start_new_thread( print_time, ("Thread-2", 4, ) )
    except:
       print ("Error: 无法启动线程")
    
    while 1:
       pass
    

    注意

    • 相当于使用了反射的方法,在后面加入要传入的参数,最后个参数后面加,
    • 子线程依附着主线程,所以在菜鸟的教程中加了个死循环的主线程
    • sleep为io操作,在io密集的时候使用多线程有好处,计算密集时不能节约时间
  • 相关阅读:
    Tomcat造成404
    ajax缺少@ResponseBody注解前台404,业务可以运行
    几种常见的Runtime Exception
    SQL注入通俗讲解
    MYSQL数据库导入大数据量sql文件失败的解决方案
    css选择器
    http端口
    基础算法之最大子列求和问题
    基础算法之链表逆序
    Prolog&Epilog
  • 原文地址:https://www.cnblogs.com/simon-idea/p/11315312.html
Copyright © 2011-2022 走看看