Python 创建线程
2017-04-22 17:05
218 查看
关于 线程 是什么东东 就不介绍了,直接进入正题。
Python 有多个模块可以支持多线程,thread,threading,Queue。此处不提Queue,有兴趣自己了解
thread模块提供了基本的线程和锁得支持,threading 提供了更全面的更高级的线程支持。因此除非特别需要,否则请使用threading而不是thread。
Python创建线程一般来说有三种方式:
1.创建一个Thread对象,传入一个函数
2.创建一个Thread对象,传入一个可调用的类对象
3.创建一个类对象,该对象继承自Thread
至于如何创建线程,请看个人爱好与需求
第一种方式: 创建一个Thread对象,传入一个函数
Thread 的 args 参数要求 必须返回一个迭代器,因此 把 (1,) 改为 1 是不可以的 ,会报错。如下
start() 开始线程
join() 等待线程结束
第二种方式:创建一个Thread对象,传入一个可调用的类对象
第三种方式:创建一个类对象,该对象继承自Thread
更多线程方面细节知识,请查阅Python 核心编程。
本人初学者。如何任何不当之处,欢迎指正,谢谢!
Python 有多个模块可以支持多线程,thread,threading,Queue。此处不提Queue,有兴趣自己了解
thread模块提供了基本的线程和锁得支持,threading 提供了更全面的更高级的线程支持。因此除非特别需要,否则请使用threading而不是thread。
Python创建线程一般来说有三种方式:
1.创建一个Thread对象,传入一个函数
2.创建一个Thread对象,传入一个可调用的类对象
3.创建一个类对象,该对象继承自Thread
至于如何创建线程,请看个人爱好与需求
第一种方式: 创建一个Thread对象,传入一个函数
import threading from time import ctime,sleep def func(thread): print 'i am thread',thread,'nothing else' sleep(5) print 'thread',thread,'is over' def main(): t1 = threading.Thread(target = func,args = (1,)) sleep(2) t2 = threading.Thread(target = func,args = (1,)) t1.start() t2.start() t1.join() t2.join() if __name__ == '__main__': main()
Thread 的 args 参数要求 必须返回一个迭代器,因此 把 (1,) 改为 1 是不可以的 ,会报错。如下
start() 开始线程
join() 等待线程结束
第二种方式:创建一个Thread对象,传入一个可调用的类对象
import threading from time import ctime,sleep class Mythread (object) : def __init__(self,func,args): self.func = func self.args = args def __call__(self): self.func(self.args) def func(thread): print 'i am thread',thread,'nothing else' sleep(5) print 'thread',thread,'is over' def main(): t1 = threading.Thread(target=Mythread(func,1)) t2 = threading.Thread(target=Mythread(func,2)) t1.start() sleep(2) t2.start() t1.join() t2.join() if __name__ == '__main__': main()
第三种方式:创建一个类对象,该对象继承自Thread
import threading from time import ctime,sleep class MyThread(threading.Thread): def __init__(self,func,args): threading.Thread.__init__(self) self.func = func self.args = args def run(self): self.func(self.args) def func(thread): print 'i am thread',thread,'nothing else' sleep(5) print 'thread',thread,'is over' def main(): t1 = MyThread(func,1) t2 = MyThread(func,2) t1.start() sleep(2) t2.start() t1.join() t2.join() if __name__ == '__main__': main()
更多线程方面细节知识,请查阅Python 核心编程。
本人初学者。如何任何不当之处,欢迎指正,谢谢!
相关文章推荐
- Python多线程编程(2): 线程的创建、启动、挂起和退出
- 使用python测测你的系统最多能创建多少个线程
- Python线程的两种创建方法
- python 多线程2-线程的创建启动,退出
- 【Python】线程的创建、执行、互斥、同步、销毁
- python之创建线程
- Python_多线程1(创建线程,简单线程同步)
- python多线程编程(2): 线程的创建、启动、挂起和退出
- Python多线程的创建,相关函数和守护线程的理解
- Python使用Threading模块创建线程
- python中threading方式创建的线程的终止
- Python 线程(一):创建线程
- 使用python测测你的系统最多能创建多少个线程
- python多线程编程(2): 线程的创建、启动、挂起和退出
- python基础-线程创建方式
- 使用python测测你的系统最多能创建多少个线程
- python:threading多线程模块-创建线程
- Python练习代码 -- 线程创建, 同步
- Python使用面向对象方式创建线程实现12306售票系统
- python多线程编程—创建线程