下面,通过一个简单的例子,来把多线程和单线程执行任务的耗时做个比较

import time
import threading # 音乐播放器
def music(func, loop):
for i in range(loop):
print("I was listening to %s the %d time! %s" % (func, i+1, time.time()))
time.sleep(2) # 视频播放器
def movie(func, loop):
for i in range(loop):
print("I was watching %s the %d time! %s" % (func, i+1, time.time()))
time.sleep(5) # 创建线程数组
threads = [] # 创建线程t1,并添加到线程数组
t1 = threading.Thread(target=music, args=('十年',2)) # 已经创建好的一个线程
threads.append(t1) # 追加到线程数组 # 创建线程t2,并添加到线程数组
t2 = threading.Thread(target=movie, args=('疯狂动物城', 2)) # args是一个元组
threads.append(t2) # 创建线程t3,并添加到线程数组
# t3 = threading.Thread(target=movie, args=('少林足球', 2))
# threads.append(t3) print(threads) if __name__ == '__main__':
print("多线程".center(20,'*'))
start_time = time.time()
# 启动线程
for t in threads:
t.start() # 所有线程启动
for t in threads:
t.join() # 守护线程
end_time = time.time()
print('开始时间: %s' % start_time)
print('结束时间: %s' % end_time) #最后的结束时间
print("总共耗时:{0:.5f}秒".format(end_time - start_time)) # 格式输出耗时
print('\n')
print("单线程".center(20, '*'))
start_time = time.time()
music('十年',2)
movie('疯狂动物城', 2)
# movie('少林足球', 2)
end_time = time.time()
print('开始时间: %s' % start_time)
print('结束时间: %s' % end_time) # 最后的结束时间
print("总共耗时:{0:.5f}秒".format(end_time - start_time)) # 格式输出耗时

多线程增加增加:t3线程

单线程增加:movie('少林足球', 2)

结论:多线程,增加线程后,运行时间基本上没变,总耗时还是等于耗时最多的线程所花费的时间;单线程则是线性的增加。另外,多线程的启动时间有极微小差异。

python多线程用法及与单线程耗时比较的更多相关文章

  1. python多线程threading.Lock锁用法实例

    本文实例讲述了python多线程threading.Lock锁的用法实例,分享给大家供大家参考.具体分析如下: python的锁可以独立提取出来 mutex = threading.Lock() #锁 ...

  2. python多线程不能利用多核cpu,但有时候多线程确实比单线程快。

    python 为什么不能利用多核 CPU  GIL 其实是因为在 python中有一个 GIL( Global Interpreter Lock),中文为:全局解释器锁.  1.最开始时候设计GIL是 ...

  3. [转]Python多线程与多线程中join()的用法

    https://www.cnblogs.com/cnkai/p/7504980.html Python多线程与多进程中join()方法的效果是相同的. 下面仅以多线程为例: 首先需要明确几个概念: 知 ...

  4. 【Python】关于Python多线程的一篇文章转载

    猪哥推荐的学习网址 http://www.jb51.net/article/110164.htm yeayee ------>更多技巧------>更多源码------>http:/ ...

  5. Python 多线程、进程、协程上手体验

    浅谈 Python 多线程.进程.协程上手体验 前言:浅谈 Python 很多人都认为 Python 的多线程是垃圾(GIL 说这锅甩不掉啊~):本章节主要给你体验下 Python 的两个库 Thre ...

  6. python 多线程,tthread模块比较底层,而threading模块是对thread做了一些包装,multithreading

    Python多线程详解 2016/05/10 · 基础知识 · 1 评论· 多线程 分享到:20 本文作者: 伯乐在线 - 王海波 .未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者. 1.多线程的 ...

  7. python 多线程就这么简单(转)

    多线程和多进程是什么自行google补脑 对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用简单的例子,让你对多线程有个初步的认识. 单线程 在好些年前的 ...

  8. 关于python多线程编程中join()和setDaemon()的一点儿探究

    关于python多线程编程中join()和setDaemon()的用法,这两天我看网上的资料看得头晕脑涨也没看懂,干脆就做一个实验来看看吧. 首先是编写实验的基础代码,创建一个名为MyThread的  ...

  9. 搞定python多线程和多进程

    1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发 ...

随机推荐

  1. Jmeter(非GUI模式)教程

    前言 使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源.优点如下:1.节约系统资源:无需启动界面,节约系统资源 2.便捷快速:仅需启动命令行,输入命令便可执行 ...

  2. 移动端触摸(touch)事件

    移动端时代已经到来,作为前端开发的我们没有理由也不应该坐井观天,而是勇敢地跳出心里的那口井,去拥抱蔚蓝的天空.该来的总会来,我们要做的就是接受未知的挑战.正如你所看到的,这是一篇关于移动端触摸事件的文 ...

  3. python基础学习笔记(五)

    字符串基本操作 所有标准的序列操作(索引.分片.乘法.判断成员资格.求长度.取最小值和最大值)对字符串同样适用,前面已经讲述的这些操作.但是,请注意字符串都是不可变的. 字符串的方法: 字符串从str ...

  4. Python数据类型-7

    什么数据类型. int 1,2,3用于计算. bool:True,False,用户判断. str:存储少量数据,进行操作 'fjdsal' '二哥','`13243','fdshklj' '战三,李四 ...

  5. 牛客小白月赛6-E对弈-简单搜索

    https://www.nowcoder.com/acm/contest/136/E 我搜索很差啊,看了学长代码,自己在下面手敲了一遍,感觉学长的极其精巧,把我繁琐的搜索步骤给简化了不少 其实本题想法 ...

  6. #个人博客作业Week3——必应词典案例分析

    第一部分 调研以及评测 一.BUG分析   1. 翻译部分原文语言检测部分 1) 症状: 当选择原文语言是简体中文时,输入英文查询,程序不报错,继续翻译,选择其他类型语言也是如此. 且如果出现这种情况 ...

  7. Linux内核分析-创建新进程的过程

    分析Linux内核创建一个新进程的过程 task_struct结构体分析 struct task_struct{ volatile long state; //进程的状态 unsigned long ...

  8. 《Multiplayer Game Programming》阅读笔记

    在图书馆发现一本<网络多人游戏架构与编程>-- Joshua Glazer, Sanjay Madhav 著.书挺新的,17年出版的,内容很有趣,翻一翻可以学到不少在<计算机网络&g ...

  9. Java的JDK下Hashtable与HashMap的区别

    时间角度: Hashtable * @since JDK1.0 ; HashMap* @since   1.2 基类与接口角度: public class Hashtable<K,V> e ...

  10. 命令行批量修改IP并ping测试

    @echo off set ip=0 :beginset /a ip=%ip%+1netsh interface ip set address "本地连接" static 172. ...