• 多线程-threading模块2


    从上面例子中发现线程的创建是颇为麻烦的,每创建一个线程都需要创建一个 t(t1、t2、...),如果创建的线程较多时这样极其不方便。下面对通过例子进行改进:
     
    #coding:utf-8
    import threading
    from time import sleep,ctime
    
    #音乐播放器
    def music(func):
        for i in range(2):
            print('Start playing: %s! %s' %(func,ctime()))
            sleep(2)
    
    
    #视频播放器
    def move(func):
        for i in range(2):
            print('Start playing: %s! %s' % (func, ctime()))
            sleep(5)
    
    
    #判断文件类型,并交给相应的函数执行
    def player(name):
        r = name.split('.')[1]
        if r == 'mp3':
            music(name)
        elif r == 'mp4':
            move(name)
        else:
            print('error: The format is not recognized!')
    
    
    
    list = ['爱情买卖.mp3','阿凡达.mp4']
    
    
    #创建线程数组
    threads = []
    files = range(len(list))
    
    for i in files:
        t = threading.Thread(target=player,args=(list[i],))
        threads.append(t)
    
    
    if __name__ == "__main__":
        #启动线程
        for i in files:
            threads[i].start()
    
        #守护线程
        for i in files:
            threads[i].join()
    
    print('all end: %s' %ctime())

    运行结果:

    Start playing: 爱情买卖.mp3! Thu Oct 18 09:53:33 2018
    Start playing: 阿凡达.mp4! Thu Oct 18 09:53:33 2018
    Start playing: 爱情买卖.mp3! Thu Oct 18 09:53:35 2018
    Start playing: 阿凡达.mp4! Thu Oct 18 09:53:38 2018
    all end: Thu Oct 18 09:53:43 2018
    有趣的是我们又创建了一个 player()函数,这个函数用于判断播放文件的类型。如果是 mp3 格式的, 我们将调用 music()函数,如果是 mp4 格式的我们调用 move()函数。哪果两种格式都不是那么只能告诉用 户你所提供有文件我播放不了。

    然后,我们创建了一个 list 的文件列表,注意为文件加上后缀名。然后我们用 len(list) 来计算 list 列表有多少个文件,这是为了帮助我们确定循环次数。

    接着我们通过一个 for 循环,把 list 中的文件添加到线程中数组 threads[]中。接着启动 threads[] 线程组,最后打印结束时间。

  • 相关阅读:
    P2216-[HAOI2007]理想的正方形
    P2157-[SDOI2009]学校食堂
    Leetcode-5176 Number of Valid Words for Each Puzzle(猜字谜)
    Leetcode-5175 Can Make Palindrome from Substring(构建回文串检测)
    Leetcode-5174 Diet Plan Performance(健身计划评估)
    Task6.PyTorch理解更多神经网络优化方法
    Task5.PyTorch实现L1,L2正则化以及Dropout
    Task4.用PyTorch实现多层网络
    Task3.PyTorch实现Logistic regression
    Task2.设立计算图并自动计算
  • 原文地址:https://www.cnblogs.com/yrxns/p/9808859.html
Copyright © 2020-2023  润新知