• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python threading模块的使用指南

    1. threding模块创建线程对象

    接上述案例,我们可以利用程序阻塞的时间让程序执行后面的任务,可以用多线程的方式去实现。对应的需要我们借助threading模块去实现:
    如下所示

    import time
    import threading
    def work():
    """只有函数对象才能佈田名线积"""
    print('5.洗茶杯: 1min ' )
    time.sleep(1)
    print('6.放茶叶: 1min ' )
    time.sleep(1)
    
    start_time = time .time()
    print( '1.洗壶: 1min ' )
    time.s1eep(1)
    print( '2.灌凉水:1min ' )
    time.sleep(1)
    print( '3.烧水: 1min ' )
    time.sleep(1)
    print( '4.等水烧开:3min ' )
    work_thread = threading.Thread(target=work)
    
    # 启动线程对象
    work_thread.start()
    time.sleep(1) # 5.洗茶杯: 1min
    time.sleep(1) # 6.放茶叶: 1min
    time.sleep(1)
    print( '7.泡茶:1min ' )
    time.sleep(1)
    print('总共花了: ',time.time() - start_time)

    以上案例是一个单线程,需要特别注意的是threading模块操作线程所操作的必须是函数对象。通过threding模块可以把一个普通的函数对象转化为线程对象。

    2. threding模块创建多线程

    当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行流的最小单元,当设置多线程时,主线程会创建多个子线程,在python中,默认情况下,主线程执行完自己的任务以后,就退出了,此时子线程会继续执行自己的任务,直到自己的任务结束。

    import time
    import threading
    
    def upload():
    print("开始上传文件...")
    time.sleep(2)
    print("完成上传文件...")
    
    def down1oad():
    print("开始下载文件...")
    time.s1eep(2)
    print("完成下载文件...")
    
    if __name__ == '__main__':
    upload_thread = threading.Thread(target=up1oad)
    up1oad_thread .start()
    up1oad_thread.join()
    down1oad_thread = threading.Thread(target=down1oad,daemon=True)
    down1oad_thread.start()
    print('主线程结束')

    也就是说主线程在分配任务时会创建多个子线程,子线程的任务进度不会阻碍主线程的执行。但是主线程会等待子线程执行任务完之后才结束主线程。也就是说实际上主线程是先执行完任务的,如果你想在主线程执行完之后就结束整个线程的话,那么可以设置守护主线程。

    3. 多线程的参数传递

    多线程的参数传递用args接受位置参数,用kwargs接受关键字参数。如下所示:

    import threading
    
    def get(ur1,header=None):
        print(ur1)
        print(header)
    
    for url in [ 'https : / /www.baidu.com', 'https:/ /www. soso.com ' ,' https: / /www . 360. com']:
        # threading.Thread
    get_thread = threading. Thread(target=get,args=(ur1, ), kwargs={ ' header ':{ 'user-agent ' : ' pythonrequests'}})
        get_thread.start

    4. 线程产生的资源竞争

    首先我们来看一个案例:

    import threading
    import time
    import random
    
    def add1(n):
        for i in range(100) :
            time.sleep(random.randint(1,3))
            with open( 'he7lo.txt', mode='a', encoding='utf-8 ' ) as f:
                f.write(f'in} he1lo wor1d !'+ 'he7lo wor1d !'*1024)
                f.write(' \n ')
    
    if __name__ == '___main__' :
        for n in range(10) :
            t1 = threading. Thread(target=add1,args=(n,))
            t1.start()

    以上就是python threading模块的使用指南的详细内容,更多关于python threading模块的使用的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • Python threading.local代码实例及原理解析
    • python语言线程标准库threading.local解读总结
    • Python中threading库实现线程锁与释放锁
    • python中threading和queue库实现多线程编程
    • Python threading Local()函数用法案例详解
    上一篇:Pytorch中Softmax和LogSoftmax的使用详解
    下一篇:Django商城项目注册功能的实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python threading模块的使用指南 python,threading,模块,的,使用指南,