Python中多线程thread与threading的实现方法


Posted in Python onAugust 18, 2014

学过Python的人应该都知道,Python是支持多线程的,并且是native的线程。本文主要是通过thread和threading这两个模块来实现多线程的。

python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用。

这里需要提一下的是python对线程的支持还不够完善,不能利用多CPU,但是下个版本的python中已经考虑改进这点,让我们拭目以待吧。

threading模块里面主要是对一些线程的操作对象化了,创建了叫Thread的class。

一般来说,使用线程有两种模式,一种是创建线程要执行的函数,把这个函数传递进Thread对象里,让它来执行;另一种是直接从Thread继承,创建一个新的class,把线程执行的代码放到这个新的 class里。

我们来看看这两种做法吧。

一、Python thread实现多线程

#-*- encoding: gb2312 -*-
import string, threading, time
 
def thread_main(a):
  global count, mutex
  # 获得线程名
  threadname = threading.currentThread().getName()
 
  for x in xrange(0, int(a)):
    # 取得锁
    mutex.acquire()
    count = count + 1
    # 释放锁
    mutex.release()
    print threadname, x, count
    time.sleep(1)
 
def main(num):
  global count, mutex
  threads = []
 
  count = 1
  # 创建一个锁
  mutex = threading.Lock()
  # 先创建线程对象
  for x in xrange(0, num):
    threads.append(threading.Thread(target=thread_main, args=(10,)))
  # 启动所有线程
  for t in threads:
    t.start()
  # 主线程中等待所有子线程退出
  for t in threads:
    t.join() 
 
 
if __name__ == '__main__':
  num = 4
  # 创建4个线程
  main(4)

二、Python threading实现多线程

#-*- encoding: gb2312 -*-
import threading
import time
 
class Test(threading.Thread):
  def __init__(self, num):
    threading.Thread.__init__(self)
    self._run_num = num
 
  def run(self):
    global count, mutex
    threadname = threading.currentThread().getName()
 
    for x in xrange(0, int(self._run_num)):
      mutex.acquire()
      count = count + 1
      mutex.release()
      print threadname, x, count
      time.sleep(1)
 
if __name__ == '__main__':
  global count, mutex
  threads = []
  num = 4
  count = 1
  # 创建锁
  mutex = threading.Lock()
  # 创建线程对象
  for x in xrange(0, num):
    threads.append(Test(10))
  # 启动线程
  for t in threads:
    t.start()
  # 等待子线程结束
  for t in threads:
    t.join()

相信本文所述Python多线程实例对大家的Python程序设计能够起到一定的借鉴价值。

Python 相关文章推荐
Python的装饰器用法学习笔记
Jun 24 Python
Python面向对象编程基础解析(一)
Oct 26 Python
python Crypto模块的安装与使用方法
Dec 21 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
python 实现在tkinter中动态显示label图片的方法
Jun 13 Python
用pyqt5 给按钮设置图标和css样式的方法
Jun 24 Python
python numpy存取文件的方式
Apr 01 Python
Python列表元素常见操作简单示例
Oct 25 Python
python 解压、复制、删除 文件的实例代码
Feb 26 Python
Django与pyecharts结合的实例代码
May 13 Python
解决Keras 中加入lambda层无法正常载入模型问题
Jun 16 Python
详解python实现可视化的MD5、sha256哈希加密小工具
Sep 14 Python
Python使用函数默认值实现函数静态变量的方法
Aug 18 #Python
Python中正则表达式的用法实例汇总
Aug 18 #Python
python中enumerate的用法实例解析
Aug 18 #Python
Python采用raw_input读取输入值的方法
Aug 18 #Python
Python中Collection的使用小技巧
Aug 18 #Python
Python实现3行代码解简单的一元一次方程
Aug 18 #Python
Python统计列表中的重复项出现的次数的方法
Aug 18 #Python
You might like
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
2017/10/30 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
Python计算三角函数之asin()方法的使用
2015/05/15 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
python构造函数init实例方法解析
2020/01/19 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
python 实现客户端与服务端的通信
2020/12/23 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
应聘自荐信
2013/12/14 职场文书
仓库文员岗位职责
2014/04/06 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
导游词之阆中古城
2019/12/23 职场文书