python多线程用法及与单线程耗时比较
下面,通过一个简单的例子,来把多线程和单线程执行任务的耗时做个比较
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多线程用法及与单线程耗时比较的更多相关文章
- python多线程threading.Lock锁用法实例
本文实例讲述了python多线程threading.Lock锁的用法实例,分享给大家供大家参考.具体分析如下: python的锁可以独立提取出来 mutex = threading.Lock() #锁 ...
- python多线程不能利用多核cpu,但有时候多线程确实比单线程快。
python 为什么不能利用多核 CPU GIL 其实是因为在 python中有一个 GIL( Global Interpreter Lock),中文为:全局解释器锁. 1.最开始时候设计GIL是 ...
- [转]Python多线程与多线程中join()的用法
https://www.cnblogs.com/cnkai/p/7504980.html Python多线程与多进程中join()方法的效果是相同的. 下面仅以多线程为例: 首先需要明确几个概念: 知 ...
- 【Python】关于Python多线程的一篇文章转载
猪哥推荐的学习网址 http://www.jb51.net/article/110164.htm yeayee ------>更多技巧------>更多源码------>http:/ ...
- Python 多线程、进程、协程上手体验
浅谈 Python 多线程.进程.协程上手体验 前言:浅谈 Python 很多人都认为 Python 的多线程是垃圾(GIL 说这锅甩不掉啊~):本章节主要给你体验下 Python 的两个库 Thre ...
- python 多线程,tthread模块比较底层,而threading模块是对thread做了一些包装,multithreading
Python多线程详解 2016/05/10 · 基础知识 · 1 评论· 多线程 分享到:20 本文作者: 伯乐在线 - 王海波 .未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者. 1.多线程的 ...
- python 多线程就这么简单(转)
多线程和多进程是什么自行google补脑 对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用简单的例子,让你对多线程有个初步的认识. 单线程 在好些年前的 ...
- 关于python多线程编程中join()和setDaemon()的一点儿探究
关于python多线程编程中join()和setDaemon()的用法,这两天我看网上的资料看得头晕脑涨也没看懂,干脆就做一个实验来看看吧. 首先是编写实验的基础代码,创建一个名为MyThread的 ...
- 搞定python多线程和多进程
1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发 ...
随机推荐
- spring boot 集成Druid
Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB ...
- sudo 与输出重定向
本文介绍如何使用 sudo 将输出重定向到当前用户没有权限的文件.注意:本文中 demo 的演示环境为 ubuntu 18.04. Permission denied 问题 如果当前用户没有某个文件的 ...
- Centos7 中文乱码
1. 安装中文库 yum groupinstall "fonts" 2. 检查是否有中文语言包 locale -a 3. 查看当前系统语言环境 locale 解析如下 LANG:当 ...
- Tomcat通过Redis实现session共享的完整部署记录
对于生产环境有了一定规模的tomcat集群业务来说,要实现session会话共享,比较稳妥的方式就是使用数据库持久化session.为什么要持久化session(共享session)呢?因为在客户端每 ...
- 在Mac终端显示 Git 当前所在分支
1.进入你的home目录 cd ~ 2.编辑.bashrc文件 vi .bashrc 3.将下面的代码加入到文件的最后处 function git_branch { branch="`git ...
- python基础学习笔记(五)
字符串基本操作 所有标准的序列操作(索引.分片.乘法.判断成员资格.求长度.取最小值和最大值)对字符串同样适用,前面已经讲述的这些操作.但是,请注意字符串都是不可变的. 字符串的方法: 字符串从str ...
- github链接与心得体会
https://github.com/wangyuefang/test 第一次使用github,我觉得github是一个非常人性化的软件,使用起来很方便.而且可以把GitHub作为免费的远程仓库,如果 ...
- C++高质量编程笔记
/* * 函数介绍: * 输入参数: * 输出参数: * 返回值 : */ void Function(float x, float y, float z) { - } if (-) { - whil ...
- 查看Linux机器名
uname -a hostname vim /etc/sysconfig/network
- Hadoop and net core a match made in docker
https://blog.sixeyed.com/hadoop-and-net-core-a-match-made-in-docker/