threading提供了一个比thread模块更高层的API来提供线程的并发性。这些线程并发运行并共享内存。

下面来看threading模块的具体用法:

一、Thread的使用 目标函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以通过start()方法,开始运行。

这里对使用多线程并发,和不适用多线程并发做了一个比较:

首先是不使用多线程的操作:

代码如下:

#!/usr/bin/env python# -*- coding:utf-8 -*-
#compare for multi threads
import timedef worker():print "worker"time.sleep(1)returnif __name__ == "__main__":for i in xrange(5):worker()

执行结果如下:

下面是使用多线程并发的操作:

代码如下:

#!/usr/bin/env python# -*- coding:utf-8 -*-
import threading
import timedef worker():print "worker"time.sleep(1)returnfor i in xrange(5):t = threading.Thread(target=worker)t.start()

可以明显看出使用了多线程并发的操作,花费时间要短的很多。

二、threading.activeCount()的使用,此方法返回当前进程中线程的个数。返回的个数中包含主线程。

代码如下:

#!/usr/bin/env python# -*- coding:utf-8 -*-
#current's number of threads
import threading
import timedef worker():print "test"time.sleep(1)for i in xrange(5):t = threading.Thread(target=worker)t.start()print "current has %d threads" % (threading.activeCount() - 1)

三、threading.enumerate()的使用。此方法返回当前运行中的Thread对象列表。

代码如下:

#!/usr/bin/env python# -*- coding:utf-8 -*-
#test the variable threading.enumerate()
import threading
import timedef worker():print "test"time.sleep(2)threads = []
for i in xrange(5):t = threading.Thread(target=worker)threads.append(t)t.start()for item in threading.enumerate():print itemprintfor item in threads:print item

四、threading.setDaemon()的使用。设置后台进程。

代码如下:

#!/usr/bin/env python# -*- coding:utf-8 -*-
#create a daemon
import threading
import timedef worker():time.sleep(3)print "worker"t=threading.Thread(target=worker)
t.setDaemon(True)
t.start()
print "haha"

可以看出worker()方法中的打印操作并没有显示出来,说明已经成为后台进程。

转载于:https://www.cnblogs.com/LiGoHi/p/7381494.html

多线程threading模块用法 -《狗嗨默示录》-相关推荐

  1. jQuery slideToggler() 方法 -《狗嗨默示录》-

    实例 在所有 <p> 元素上进行 slideUp() 和 slideDown() 之间的切换: $("button").click(function(){ $(&quo ...

  2. MySQL数据库基本的“增删改查”操作 -《狗嗨默示录》-

    一.使用Navicat for MySQL进行可视化操作 想要通过直观的图形界面查看MySQL数据库,使用鼠标点击查看有多少个表,以及表里有啥东西.那么你可以这样: 图形界面: 命令: 查看多少个数据 ...

  3. 豆瓣电影《杀破狼》影评制作词云 -《狗嗨默示录》-

    shapolang.py # !/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'LiGoHi'import warnings war ...

  4. 21天学习挑战赛——Python多线程(threading模块)

    ​ 目录 ​1.多任务概述 2. threading 模块 2.1 Thread类 2.2 threading.Thread 用法举例: 2.2.1 单线程举例 2.2.2 使用 threading ...

  5. 中华英才网爬虫程序解析(2)-多线程threading模块

    欢迎来到爬虫高级兼实战教程,打开你的IDE,开始python之旅吧! threading模块 threading是多线程的一个模块.所谓多线程,就是实现多个线程并发执行的技术. 使用多线程能帮助我们提 ...

  6. 100天精通Python(进阶篇)——第37天:多线程threading模块基础+代码实战

    文章目录 一.多任务介绍 二.多任务的概念 三.threading 模块介绍 1. Thread类使用说明 2. 实例化 threading.Thread(重点) 3. 继承 threading.Th ...

  7. py - 多线程 -threading模块

    为了解决在一个程序中多个函数或多处地方一起执行一起执行的问题 线程:就是实现多任务的一种手段 在一个程序运行起来以后一定有一个执行代码东西 这个东西就叫做线程 主要思路: 先创建一个theading. ...

  8. python爬虫———多线程threading模块爬取抖音用户信息

    爬虫背景: 由于原来的数据库中有1.5亿左右的用户id,但是其中有1.2亿的用户资料是不完整的(没有粉丝数量,点赞数量等,算是无用数据),现在老板要求将这些没有资料的用户更新信息,咋办? 刚开始的想法 ...

  9. Python多线程编程---(1)threading 模块 Thread 类

    全文参考:Python多线程编程(一):threading 模块 Thread 类的用法详解_frank 的专栏-CSDN博客 最近看了下团队自动化测试用例的代码,里面有涉及并行处理的逻辑,主要是基于 ...

最新文章

  1. Apache2.4.x下proxy_module、proxy_fcgi_module结合PHP-FPM解决内存不足问题
  2. Linux虚拟机 百度云 监控,使用Shell脚本监控KVM虚拟机
  3. KVM的客户机可以使用的存储
  4. C# 数据库dataGridView刷新数据和主外键判断
  5. OpenCV4每日一练day10:图像校正
  6. OscillatorNode
  7. Java VisualVM无法检测到本地java程序 的 解决办法
  8. Java生产者 消费者模型的一种实现
  9. [转]SQL Server 安全性概論與無法刪除資料庫使用者的解決辦法
  10. ThingsBoard 提示Too many updates!
  11. 16 数值的整数次方 (第3章 高质量的代码-代码的完整性)
  12. Unity笔记之凤凰模拟器
  13. 统计学习方法——概述
  14. 老话题,火车票抢票助手,简化版 (漏洞已经失效^_^)
  15. Order by 多条件排序
  16. python金融量化风险_Python量化:评估投资组合的收益率和风险
  17. peewee操作mysql_Peewee 使用
  18. 一个完整的项目管理流程!
  19. CSS z-index属性层重叠顺序
  20. “猫爪杯”遭国人疯抢,“大白兔冰淇淋”在美国大火

热门文章

  1. WebAssembly运行时库(WASM runtime:wasmer 或 wasmtime)\将rust官方demo猜数字编译为WASI目标并使用Wasmer运行
  2. 叶飘落,诉说着冷寂与孤独
  3. The bean 'llWebSocketHandler' could not be injected because it is a JDK dynamic proxy that implemen
  4. 生而不凡的EOS区块链技术
  5. Java动态代理技术-我的浅显认识
  6. mybatis-Springboot配置多数据源出现错误记录
  7. ae制作小球轨迹运动_在AE里如何让物体沿着路径运动?
  8. 矩阵求逆操作的复杂度分析(逆矩阵的复杂度分析)
  9. Coffee and Coursework
  10. ISA2006禁止BT下载方法