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中的hashlib和base64加密模块使用实例
Sep 02 Python
python类继承与子类实例初始化用法分析
Apr 17 Python
详细解读Python中的__init__()方法
May 02 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
Nov 14 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
对python操作kafka写入json数据的简单demo分享
Dec 27 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
Feb 13 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
python程序文件扩展名知识点详解
Feb 27 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 Python
Python实现视频中添加音频工具详解
Dec 06 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
提升PHP执行速度全攻略
2006/10/09 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
php 多文件上传的实现实例
2016/10/23 PHP
php防止sql注入的方法详解
2017/02/20 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
easy_install python包安装管理工具介绍
2013/02/10 Python
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
Python创建xml文件示例
2017/03/22 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
详解Python学习之安装pandas
2019/04/16 Python
如何使用Python 打印各种三角形
2019/06/28 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
pytorch简介
2020/11/11 Python
农业资源与环境专业自荐信范文
2013/12/30 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
社区志愿者活动方案
2014/08/18 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
安全隐患整改报告
2014/11/06 职场文书