python多线程编程(1)
来源:互联网 发布:长沙软件学校 编辑:程序博客网 时间:2024/05/17 09:26
多线程&多进程
操作系统会为每个进程分配不同的内存块,而多个线程共享进程的内存块。这带来最直接的不同就是创建线程的开销远小于创建进程的开销。
同时,由于内存块不同,所以进程之间的通信相对困难。需要采用pipe/named pipe,signal, message queue, shared memory,socket等手段;而线程间的通信简单快速,就是共享进程内的全局变量。
但是,进程的调度由操作系统负责,线程的调度就需要我们自己来考虑,避免死锁,饥饿,活锁,资源枯竭等情况的发生,这会增加一定的复杂度。而且,由于线程之间共享内存,我们还需要考虑线程安全性的问题。
threading:对thread进行了封装,将一些线程的操作对象化,提供下列类:
Thread 线程类
Timer与Thread类似,但要等待一段时间后才开始运行
Lock 锁原语
RLock 可重入锁。使单线程可以再次获得已经获得的锁
Condition 条件变量,能让一个线程停下来,等待其他线程满足某个“条件”
Event 通用的条件变量。多个线程可以等待某个事件发生,在事件发生后,所有的线程都被激活
Semaphore为等待锁的线程提供一个类似“等候室”的结构
BoundedSemaphore 与semaphore类似,但不允许超过初始值
Queue:实现了多生产者(Producer)、多消费者(Consumer)的队列,支持锁原语,能够在多个线程之间提供很好的同步支持。提供的类:
Queue队列
LifoQueue后入先出(LIFO)队列
PriorityQueue 优先队列
其中Thread类是你主要的线程类,可以创建进程实例。该类提供的函数包括:
getName(self) 返回线程的名字
isAlive(self) 布尔标志,表示这个线程是否还在运行中
isDaemon(self) 返回线程的daemon标志
join(self, timeout=None) 程序挂起,直到线程结束,如果给出timeout,则最多阻塞timeout秒
run(self) 定义线程的功能函数
setDaemon(self, daemonic) 把线程的daemon标志设为daemonic
setName(self, name) 设置线程的名字
start(self) 开始线程执行
线程的创建、启动、挂起、退出
#!/usr/bin/env pythonimport threadingimport timeclass MyThread(threading.Thread): def run(self): for i in range(3): time.sleep(1) msg="I'm"+self.name+'@'+str(i) print msgdef test(): for i in range(5): t=MyThread() t.start()if __name__=='__main__': test()
阅读全文
0 0
- python多线程编程(1)
- python 多线程编程(一)
- python 多线程编程(二)
- python 多线程编程(三)
- python 多线程编程(四)
- python多线程编程(二)
- python多线程编程(五)
- Python多线程编程(一)
- Python多线程编程(二)
- python高级编程(一)--多线程编程
- python多线程编程(1): python对多线程的支持
- Python多线程编程1----Python对多线程的支持
- python多线程编程(1): python对多线程的支持
- python多线程编程(1): python对多线程的支持
- python多线程编程(1): python对多线程的支持
- python多线程编程(1): python对多线程的支持
- python的学习(七)----多线程编程(1)
- python多线程编程(一)--thread模块
- C++中的引用
- 初始化变量
- Frequent values poj3368 线段树
- 【西普实验吧】斐波那契数列分值
- [arc065f]Shuffling
- python多线程编程(1)
- python中的*args与**kwgs的含义与作用
- bzoj1024: [SCOI2009]生日快乐
- 输出水仙花数
- MySQL和Redis 数据同步解决方案整理
- 动态分区分配方式的模拟-python实现
- HDOJ--1028Ignatius and the Princess III!!母函数
- 推荐系统论文阅读——Factorizing Personalized Markov Chains for Next-Basket Recommendation
- Sqoop笔记--简单的导入导出