执行函数

1.先写一个执行函数,用来实现做某件事情,不同的人吃火锅用一个参数people代替。

# coding=utf-8
import threading
import time def chiHuoGuo(people):
print("%s 吃火锅的小伙伴-羊肉:%s" % (time.ctime(),people))
time.sleep(1)
print("%s 吃火锅的小伙伴-鱼丸:%s" % (time.ctime(),people))

重写threading.Thread

1.使用Threading模块创建线程,直接从threading.Thread继承,然后重写__init__方法和run方法

# coding=utf-8
import threading
import time class myThread (threading.Thread): # 继承父类threading.Thread
def __init__(self, people, name):
'''重写threading.Thread初始化内容'''
threading.Thread.__init__(self)
self.threadName = name
self.people = people def run(self): # 把要执行的代码写到run函数里面 线程在创建后会直接运行run函数
'''重写run方法'''
print("开始线程: " + self.threadName) chiHuoGuo(self.people) # 执行任务 print("结束线程: " + self.name)

start和run区别

1.start()方法 开始线程活动。

对每一个线程对象来说它只能被调用一次,它安排对象在一个另外的单独线程中调用run()方法(而非当前所处线程)。

当该方法在同一个线程对象中被调用超过一次时,会引入RuntimeError(运行时错误)。

2.run()方法 代表了线程活动的方法。

你可以在子类中重写此方法。标准run()方法调用了传递给对象的构造函数的可调对象作为目标参数,如果有这样的参数的话,顺序和关键字参数分别从args和kargs取得

参考代码

# coding=utf-8
import threading
import time def chiHuoGuo(people):
print("%s 吃火锅的小伙伴-羊肉:%s" % (time.ctime(),people))
time.sleep(1)
print("%s 吃火锅的小伙伴-鱼丸:%s" % (time.ctime(),people)) class myThread (threading.Thread): # 继承父类threading.Thread
def __init__(self, people, name):
'''重写threading.Thread初始化内容'''
threading.Thread.__init__(self)
self.threadName = name
self.people = people def run(self): # 把要执行的代码写到run函数里面 线程在创建后会直接运行run函数
'''重写run方法'''
print("开始线程: " + self.threadName) chiHuoGuo(self.people) # 执行任务 print("结束线程: " + self.name) # 创建新线程
thread1 = myThread("海海", "线程A")
thread2 = myThread("老王", "线程B") # 开启线程
thread1.start()
thread2.start() time.sleep(0.5)
print("退出主线程")



python笔记8-多线程threading之封装式的更多相关文章

  1. python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon)

    python笔记9-多线程Threading之阻塞(join)和守护线程(setDaemon) 前言 今天小编YOYO请xiaoming和xiaowang吃火锅,吃完火锅的时候会有以下三种场景: - ...

  2. python笔记7-多线程threading之函数式

    前言 1.python环境3.62.threading模块系统自带 单线程 1.平常写的代码都是按顺序挨个执行的,就好比吃火锅和哼小曲这两个行为事件,定义成两个函数,执行的时候,是先吃火锅再哼小曲,这 ...

  3. python笔记12-python多线程之事件(Event)

    前言 小伙伴a,b,c围着吃火锅,当菜上齐了,请客的主人说:开吃!,于是小伙伴一起动筷子,这种场景如何实现 Event(事件) Event(事件):事件处理的机制:全局定义了一个内置标志Flag,如果 ...

  4. Python核心编程——多线程threading和队列

    线程与进程类似不过他们是在同一个进程下执行的,并共享相同的上下文.可以将他们认为是在一个主进程或“主线程”中运行的迷你进程. 线程包括开始.执行顺序和结束三部分.它有一个指令指针,用于记录当前运行的上 ...

  5. python笔记5 接口类抽象类 封装 反射 设计模式 模块 :random随机数 josn shelve持久化存储

    接口类抽象类 接口类:接口类就是制定一个规则,让其他人按照我的规则去写程序. #!/usr/bin/env python from abc import ABCMeta,abstractmethod ...

  6. Python模块学习------ 多线程threading(2)

    一.避免使用thread模块,使用threading模块的原因: 1. 更高级别的threading模块更为先进,对线程的支持更加完善.而且使用thread模块的属性有可能会与threading 出现 ...

  7. Python模块学习------ 多线程threading(1)

    # Method 1: 创建一个Thread实例,传给它一个函数:import threading from time import sleep, ctime loops = [4,2] def lo ...

  8. 物无定味适口者珍,Python3并发场景(CPU密集/IO密集)任务的并发方式的场景抉择(多线程threading/多进程multiprocessing/协程asyncio)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_221 一般情况下,大家对Python原生的并发/并行工作方式:进程.线程和协程的关系与区别都能讲清楚.甚至具体的对象名称.内置方法 ...

  9. python学习笔记之使用threading模块实现多线程(转)

    综述 Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势 ...

随机推荐

  1. GitBook入门(用github做出第一本书)——超详细配图说明

    我最近接触到gitbook,发现它支持markdown和git,刚好把我之前在github上的笔记可以生成一本书,于是我就开始着手捣鼓gitbook,一下午的时间就弄的差不多了,说明这个东西还是挺容易 ...

  2. 解决windows10下总是很快自动黑屏进入睡眠问题

    在用win10的过程中总是过几分钟不操作电脑,就自动黑屏睡眠了. 下面讲解一下如何解决这个问题: 第一步:win +r  输入regedit.exe 运行注册表管理器 第二步:定位到 HKEY_LOC ...

  3. 几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较

    几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较 来源   XFire VS Axis XFire是与Axis2 并列的新一代WebService平台.之所 ...

  4. 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境(服务器端及客户端)(转)

    近期想改公司内部的源码管控从TFS为git,发现yubinfeng大侠有关git的超详细大作,现将其转载并记录下,以防忘记,其原博客中有更加详细的git及.net开发相关内容.原文地址:http:// ...

  5. 更改SQLServer实例默认字符集

    转自http://www.cnblogs.com/fygh/archive/2012/05/15/2501598.html 需求 安装数据库时,将字符集安装成了“SQL_Latin1_General_ ...

  6. 图标插件FusionChartsFree

    二.介绍 Ø FusionCharts 是InfoSoft Global 公司的一个产品,InfoSoft Global 公司是专业的Flash 图形方案提供商,他们还有几款其他的,基于Flash 技 ...

  7. 在Ubuntu16.04.4和Windows10上安装jdk

    在Ubuntu16.04.4和Windows10上安装jdk 一.在Ubuntu16.04.4上安装jdk  1.下载jdk安装包     首先我们在oracle官网上下载jdk-8u161-linu ...

  8. .net mvc 获取acion 返回类型

    1..net core 中获取 public override void OnActionExecuted(ActionExecutedContext context) { var descripto ...

  9. fb登陆遇到傻逼问题

    centos中curl需要ssl的支持, 所以我重新安装了curl,并安装了openssl-devel,这个是依赖,必须的. so 完美

  10. csharp: Microsoft SqlHelper

    from: Microsoft Data Access Application Block for .NET  https://www.microsoft.com/en-us/download/con ...