Python多线程编程基础2:如何创建线程

Python标准库threading中的Thread类用来创建和管理线程对象,支持使用两种方法来创建线程:1)直接使用Thread类实例化一个线程对象并传递一个可调用对象作为参数;2)继承Thread类并在派生类中重写__init__()和run()方法。创建了线程对象以后,可以调用其start()方法来启动,该方法自动调用该类对象的run()方法,此时该线程处于alive状态,直至线程的run()方法运行结束。

下面演示第一种创建线程的方法:

import threading

def demo(start, end):

for i in range(start, end):

print(i)

# 创建线程

t = threading.Thread(target=demo,\

args=(3,6))

# 启动线程

t.start()

运行结果:

3

4

5

下面演示第二种创建线程的方法:

from threading import Thread

class MyThread(Thread):

def __init__(self,\

begin,\

end):

# 调用基类构造方法初始化

Thread.__init__(self)

# 初始化

self.begin = begin

self.end = end

def run(self):

# 调用线程start()方法运行这里的代码

for i in range(self.begin,\

self.end):

print(i)

# 创建线程

t = MyThread(3, 6)

# 启动线程

t.start()

运行结果:

3

4

5

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2017-07-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏青玉伏案

窥探Swift编程之错误处理与异常抛出

在Swift 2.0版本中,Swift语言对其错误处理进行了新的设计,当然了,重新设计后的结果使得该错误处理系统用起来更爽。今天博客的主题就是系统的搞一下Swi...

1955
来自专栏微信公众号:Java团长

Java虚拟机体系结构

  众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下...

1042
来自专栏编程

Python面向对象6:​isinstance、super、有序字典

1、isinstance(对象名,类),查看对象是不是类的实例。 案例1:isinstance(对象名,类) classFoo: print('hh') obj...

1938
来自专栏Linyb极客之路

深入理解和探究Java类加载机制

java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个Java 类,即 ...

1013
来自专栏java思维导图

【一分钟知识】断言,Error和Exception区别

1、将GB2312编码的字符串转换为ISO-8859-1编码的字符串 ? 2、断言(assert) 软件开发中是一种常用的调试方式 断言用于保证程序最基本、关键...

3488
来自专栏上善若水

040android初级篇之标准java版的HelloWorld编译及运行

运行的时候,如果 .class文件不在当前目录则需要使用-classpath 指定所在目录。

853
来自专栏魂祭心

原 yield用法分析

3587
来自专栏微信公众号:Java团长

理解Java虚拟机体系结构

  众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下...

1286
来自专栏WebDeveloper

php缓冲区与header函数之间的秘密

我们在实际的开发中,是否听说过在header之前不能有任何的实际输出。甚至有的认为header函数必须写在代码的最前面。可是你是否试验过header函数之前输出...

1212
来自专栏python3

python3--面向对象的进阶

反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问,检测和修改它本身状态或行为的一种能力(自省),它首先被程序语言的设计领域所采用,并在Lis...

742

扫码关注云+社区