Python使用面向对象方式创建线程实现12306售票系统


Posted in Python onDecember 24, 2015

目前python 提供了几种多线程实现方式 thread,threading,multithreading ,其中thread模块比较底层,而threading模块是对thread做了一些包装,可以更加方便的被使用。

面向对象技术简介

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。

方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

实例变量:定义在方法中的变量,只作用于当前实例的类。

继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。

实例化:创建一个类的实例,类的具体对象。

方法:类中定义的函数。

对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

---恢复内容开始---

通过面向对象的方法实现多线程,其核心是继承threading.Thread类。我们自己定义了一个类BoothThread, 这个类继承自thread.Threading类,通过修改Thread类的run()方法来定义线程所要执行的命令。

import threading # Python主要通过标准库中的threading包来实现多线程
import time
import os
#作为间隔 每次调用间隔.s
def doChore():
time.sleep(.)
# 定义一个类BoothThread继承自thread.Threading类
class BoothThread(threading.Thread):
def __init__(self, tid, monitor):
self.tid = tid
self.monitor = monitor
threading.Thread.__init__(self)
def run(self):
while True:
monitor['lock'].acquire() # 调用lock.acquire() 加锁
if monitor['tick'] != :
monitor['tick'] = monitor['tick'] - # 售票 售出一张减少一张
print(self.tid,':now left:',monitor['tick']) # 剩下的票数
doChore() 
else:
print("Thread_id",self.tid," No more tickets")
os._exit() # 票售完 退出程序
monitor['lock'].release() # 释放锁
doChore() 
monitor = {'tick':, 'lock':threading.Lock()} # 初始化票数
# 总共设置了个线程
for k in range():
new_thread = BoothThread(k, monitor) # 创建线程; Python使用threading.Thread对象来代表线程 类BoothThread继承自thread.Threading类 
new_thread.start() # 调用start()方法启动线程

这里使用了一个词典 monitor存放全局变量,然后把词典作为参数传递给线程函数。由于词典是可变数据对象,所以当它被传递给函数的时候,函数所使用的依然是同一个对象,相当于被多个线程所共享。

以上内容给大家介绍了Python使用面向对象方式创建线程实现12306售票系统的全部叙述,希望大家喜欢。

Python 相关文章推荐
Python实现的Kmeans++算法实例
Apr 26 Python
python实现class对象转换成json/字典的方法
Mar 11 Python
Python 绘图和可视化详细介绍
Feb 11 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
python实现多线程行情抓取工具的方法
Feb 28 Python
TensorFlow入门使用 tf.train.Saver()保存模型
Apr 24 Python
解决Python pandas plot输出图形中显示中文乱码问题
Dec 12 Python
对python 读取线的shp文件实例详解
Dec 22 Python
opencv 实现特定颜色线条提取与定位操作
Jun 02 Python
基于Django快速集成Echarts代码示例
Dec 01 Python
matplotlib grid()设置网格线外观的实现
Feb 22 Python
python爬取豆瓣电影TOP250数据
May 23 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 #Python
Python生成随机验证码的两种方法
Dec 22 #Python
基于python实现微信模板消息
Dec 21 #Python
python如何实现远程控制电脑(结合微信)
Dec 21 #Python
python从入门到精通(DAY 3)
Dec 20 #Python
python从入门到精通(DAY 2)
Dec 20 #Python
利用python代码写的12306订票代码
Dec 20 #Python
You might like
php Hex RGB颜色值互换的使用
2013/05/10 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
2010/03/07 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
jquery text(),val(),html()方法区别总结
2013/11/04 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
python出现"IndentationError: unexpected indent"错误解决办法
2017/10/15 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Python类如何定义私有变量
2020/02/03 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
django从后台返回html代码的实例
2020/03/11 Python
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
教师中国梦演讲稿
2014/04/23 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
财务会计岗位职责
2015/02/03 职场文书
2015年教务主任工作总结
2015/07/22 职场文书