在Python中我们主要是通过thread和threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用threading模块实现多线程编程。一般来说,使用线程有两种模式,一种是创建线程要执行的函数,把这个函数传递进Thread对象里,让它来执行;另一种是直接从Thread继承,创建一个新的class,把线程执行的代码放到这个新的 class里。
将函数传递进Thread对象
''' Created on 2012-9-5 @author: walfred @module: thread.ThreadTest1 @description: ''' import threading def thread_fun(num): for n in range(0, int(num)): print " I come from %s, num: %s" %( threading.currentThread().getName(), n) def main(thread_num): thread_list = list(); # 先创建线程对象 for i in range(0, thread_num): thread_name = "thread_%s" %i thread_list.append(threading.Thread(target = thread_fun, name = thread_name, args = (20,))) # 启动所有线程 for thread in thread_list: thread.start() # 主线程中等待所有子线程退出 for thread in thread_list: thread.join() if __name__ == "__main__": main(3)
程序启动了3个线程,并且打印了每一个线程的线程名字,这个比较简单吧,处理重复任务就派出用场了,下面介绍使用继承threading的方式;
继承自threading.Thread类
''' Created on 2012-9-6 @author: walfred @module: thread.ThreadTest2 ''' import threading class MyThread(threading.Thread): def __init__(self): threading.Thread.__init__(self); def run(self): print "I am %s" %self.name if __name__ == "__main__": for thread in range(0, 5): t = MyThread() t.start()
接下来的文章,将会介绍如何控制这些线程,包括子线程的退出,子线程是否存活及将子线程设置为守护线程(Daemon)。
本文向大家介绍Linux多线程编程(二),包括了Linux多线程编程(二)的使用技巧和注意事项,需要的朋友参考一下 引言 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待条件变量的条件成立而挂起(此时不再占用cpu);另一个线程使条件成立(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 函数原型 1. 定义条件变量 2. 初始化和销
9.3.4 Python 多线程编程 很多编程语言都支持多线程编程,Python 语言亦然。与其他编程语言相比,Python 的 多线程编程是非常简单的。 Python 提供了两个支持线程的模块,一个是较老的 thread 模块,另一个是较新的 threading 模块。其中 threading 采用了面向对象实现,功能更强,建议读者使用。 thread 模块的用法 任何程序一旦开始执行,就构成了
本文向大家介绍Java中启动线程start和run的两种方法,包括了Java中启动线程start和run的两种方法的使用技巧和注意事项,需要的朋友参考一下 一、区别 Java中启动线程有两种方法,继承Thread类和实现Runnable接口,由于Java无法实现多重继承,所以一般通过实现Runnable接口来创建线程。但是无论哪种方法都可以通过start()和run()方法来启动线程,下面就来介绍
本文向大家介绍IOS多线程编程的3种实现方法,包括了IOS多线程编程的3种实现方法的使用技巧和注意事项,需要的朋友参考一下 前言 在多线程简介中,我已经说明过了,为了提高界面的流畅度以及用户体验。我们务必要把耗时的操作放到别的线程中去执行,千万不要阻塞主线程。 iOS中有以下3种多线程编程方法: 1.NSThread 这是最轻量级的多线程的方法,使用起来最直观的多线程编程方法。但是因为需要自己管理
其实创建线程之后,线程并不是始终保持一个状态的,其状态大概如下: New 创建 Runnable 就绪。等待调度 Running 运行 Blocked 阻塞。阻塞可能在 Wait Locked Sleeping Dead 消亡 线程有着不同的状态,也有不同的类型。大致可分为: 主线程 子线程 守护线程(后台线程) 前台线程 简单了解完这些之后,我们开始看看具体的代码使用了。 1、线程的创建 Pyt
一个常见的问题:我们可以启动同一个线程两次吗? 答案是:不可以! 启动线程后,将永远无法再次启动它。如果您这样做,则抛出IllegalThreadStateException异常。 让我们通过以下示例看看: 输出结果为: