简单多线程实现:启动50个线程,并计算执行时间。

import threading
import time def run(n):
time.sleep(3)
print("task:",n) # 使用单线程,执行完需要6s
# t1.run()
# t2.run() # 使用多线程,执行完需要3s,怎么确定是3s呢?在前后加时间相减能否算出来?
# t1 = threading.Thread(target=run, args=("t1",))
# t2 = threading.Thread(target=run, args=("t2",))
# t1.start()
# t2.start() # 快速执行多线程,启动线程不能太多,上下文切换会导致速度变慢
# 怎样算所有线程执行完的时间呢??直接在主线程里加时间相减是计算不出来的。因为~
# 主线程创建线程之后直接往下走了,不会等子线程执行完毕
# 一个程序至少有一个线程(主线程),主线程和子线程是并行的
# 主线程启动子线程之后子线程就独立了
# so,直接在主线程里加测不出来时间,那么可以在主线程里等待子线程的执行结果
# 加t.join(),作用是等待t线程的执行结果,不出结果不往下走,
# 可以试试,如果在每个线程的启动语句后面加t.join(),那么加了之后程序就变成串行的了,达不到效果
# 如果这样呢?t1.start() t2.start() t1.join() 假设t1线程需要2秒,t2线程需要4秒那么t1先结束主线程就打印时间了
# 就需要 t1.start() t2.start() t1.join() t2.join() 按这个顺序执行才行。so我们启动50个线程,计算执行时间:
# 虽然启动了50个线程,但是有51个线程在执行,包括主线程,通过“threading.current_thread()”查看当前线程的名称
# 通过方法“threading.active_count()”查看当前活动线程的个数 start_time = time.time()
t_objs = []
for i in range(50):
t = threading.Thread(target=run, args=("t-{0}".format(i),))
t.start()
t_objs.append(t)
for t in t_objs:
t.join()
print("cost:", time.time()-start_time)

Python简单的多线程demo:常用写法的更多相关文章

  1. Python简单的多线程demo:装逼写法

    用面向对象来写多线程: import threading class MyThread(threading.Thread): def __init__(self, n): super(MyThread ...

  2. Python 简单理解多线程

    进程,是一个或多个线程的集合,每个进程在内存中是相对独立的. 线程,是计算机最小的运算单元,每个进程至少要有一个线程,多个线程时,每个线程间之间共享内存. 分别举例常规运行和多线程运行: 0)常规运行 ...

  3. Python 简单的多线程聊天

    # client 端 import socket ip_port = ('127.0.0.1', 8091) sk = socket.socket() sk.connect(ip_port) prin ...

  4. python time和datetime常用写法格式

    python 的time和datetime常用写法 import time from datetime import datetime from datetime import timedelta # ...

  5. 一个简单的多线程Python爬虫(一)

    一个简单的多线程Python爬虫 最近想要抓取拉勾网的数据,最开始是使用Scrapy的,但是遇到了下面两个问题: 前端页面是用JS模板引擎生成的 接口主要是用POST提交参数的 目前不会处理使用JS模 ...

  6. python 简单搭建阻塞式单进程,多进程,多线程服务

    由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 :  --> 点击这里 我们可以通过这样子的方式去理解apache的工作原理 1 单进程TCP服 ...

  7. jquery常用写法简单记录

    好久不写东西了......话不多说,主要记录一下,最近做的项目中用到的js的记录(虽然特别特别简单) 一 jquery常用写法记录 jQuery(this).addClass("select ...

  8. Python 简单入门指北(一)

    Python 简单入门指北(一) Python 是一门非常容易上手的语言,通过查阅资料和教程,也许一晚上就能写出一个简单的爬虫.但 Python 也是一门很难精通的语言,因为简洁的语法背后隐藏了许多黑 ...

  9. 【JulyEdu-Python基础】第 7 课:Python并发编程以及系统常用模块

    主要内容 Python多进程与多线程 Python使用Hadoop分布式计算库mrjob Python使用Spark分布式计算库PySpark 例子:分别使用MapReduce和Spark实现word ...

随机推荐

  1. C#使用Windows Service

    前言:Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新 ...

  2. Jvm垃圾回收器(算法篇)

    在<Jvm垃圾回收器(基础篇)>中我们主要学习了判断对象是否存活还是死亡?两种基础的垃圾回收算法:引用计数法.可达性分析算法.以及Java引用的4种分类:强引用.软引用.弱引用.虚引用.和 ...

  3. 日志服务Python消费组实战(三):实时跨域监测多日志库数据

    解决问题 使用日志服务进行数据处理与传递的过程中,你是否遇到如下监测场景不能很好的解决: 特定数据上传到日志服务中需要检查数据内的异常情况,而没有现成监控工具? 需要检索数据里面的关键字,但数据没有建 ...

  4. 痞子衡嵌入式:一表全搜罗常见低功耗广域物联网协议(NB-IoT/eMTC/LoRa/SigFox...)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是低功耗广域物联网协议. 上一篇痞子衡给大家搜罗了短距离无线通信协议,它是物联网的基础,但它的应用距离比较短,对于长距离的物联网应用鞭长莫 ...

  5. vue webpack打包背景图片

    vue的背景图 和 img标签图大于10KB都不会转成base64处理,可以设置limit(不推荐),所以要设置一个公共路径,解决办法如下

  6. Redux,基础

    在学习了React之后, 紧跟着而来的就是Redux了~ 在系统性的学习一个东西的时候, 了解其背景.设计以及解决了什么问题都是非常必要的. 接下来记录的是, 我个人在学习Redux时的一些杂七杂八~ ...

  7. [转]react 部署在ngnix上(windows环境)

    本文转自:https://blog.csdn.net/wly_er/article/details/82348593 目录 1.下载nginx. 2.测试nginx 3.配置react项目 4.ngi ...

  8. [转]C# 实现Jwt bearer Authentication

    本文转自:https://www.cnblogs.com/aishangyipiyema/p/9262642.html 什么是JWT JWT(JSON Web Token), 顾名思义就是在Web上以 ...

  9. Odd-e CSD Course Day 1

    First 強烈的建議,記得準備好當地的 SIM 卡及插座轉接頭,在這五天中很好用的 接下來,我就各個主題來介紹一下相關的心得.首先我們這五天裡會依照 Scrum 的流程,完全的跑過一次,從一開始的需 ...

  10. 微信小程序支付接入注意点

    一.微信支付后台服务器部署 服务器采用ubuntu16.04 + php7.0 + apache2.0. 微信支付后台服务使用了curl 和 samplexml ,因此php.ini配置中必须开启这两 ...