首页 > 编程语言 > 详细

python 多线程笔记(1)-- 概念

时间:2016-02-02 17:41:48      阅读:228      评论:0      收藏:0      [点我收藏+]

本文对不使用线程和使用线程做了一个对比。

假设有两件事情:听歌、看电影

一、不用线程

import time

songs = [爱情买卖,朋友,回家过年,好日子]
movies = [阿凡达,猩球崛起]

def music(songs):
    for s in songs:
        print("开始听歌曲:%s \t-- %s" %(s, time.ctime()))
        time.sleep(3)

def movie(movies):
    for m in movies:
        print("开始看电影:%s \t-- %s" %(m, time.ctime()))
        time.sleep(5)


if __name__ == __main__:
    # 直接
    start = time.clock()

    music(songs)
    movie(movies)

    print("全部结束,耗时:{:.2f}".format(time.clock() - start))

运行效果图:

技术分享

我们来计算一下时间:

  歌曲:4 * 3 = 12 秒

  电影:2 * 5 = 10 秒

  合计: 22 秒 (方法:累加)

 

二、使用线程

开两个线程,一个听歌,一个看电影

import threading
import time

songs = [爱情买卖,朋友,回家过年,好日子]
movies = [阿凡达,猩球崛起]

def music(songs):
    for s in songs:
        print("开始听歌曲:%s \t-- %s" %(s, time.ctime()))
        time.sleep(3)

def movie(movies):
    for m in movies:
        print("开始看电影:%s \t-- %s" %(m, time.ctime()))
        time.sleep(5)


if __name__ == __main__:
    
    start = time.clock()
    
    # 创建线程
    t1 = threading.Thread(target=music, args=(songs,))  # 听歌
    t2 = threading.Thread(target=movie, args=(movies,)) # 看电影
    
    # 启动所有线程
    for t in [t1, t2]:
        t.setDaemon(True) # 守护线程
        t.start()
        #t.join() 不要这样
    #t.join() 也不要这样
    
    # 阻塞主线程,直到所有子线程退出
    for t in [t1, t2]:
        t.join()
    
    print("全部线程结束,耗时:{:.2f}".format(time.clock() - start))

运行效果图:

技术分享

我们来计算一下时间:

  歌曲:4 * 3 = 12 秒

  电影:2 * 5 = 10 秒

  合计:12  秒(方法:取最大值)

 

python 多线程笔记(1)-- 概念

原文:http://www.cnblogs.com/hhh5460/p/5178088.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!