python多线程学习总结
来源:互联网 发布:微信朋友圈数据采集 编辑:程序博客网 时间:2024/05/17 22:41
进程可以理解为一个运行中的程序,拥有自己的地址空间、内容、数据栈以及其他用于跟踪执行的辅助数据。线程可立即为mini进程,其是在同一个进程下执行的,共享同一片数据空间。线程包括开始、执行顺序和结束三个部分。
线程间的信息共享和通信更加容易。线程一般是以并发方式执行的,正是由于这种并行和数据共享机制,使得多任务间的协作成为可能。当然,在单核 CPU 系统中,因为真正的并发是不可能的,所以线程的执行实际上是这样规划的:每个线程运行一小会儿,然后让步给其他线程(再次排队等待更多的 CPU 时间)。在整个进程的执行过程中,每个线程执行它自己特定的任务,在必要时和其他线程进行结果通信。当然,这种共享并不是没有风险的。如果两个或多个线程访问同一片数据,由于数据访问顺序不同,可能导致结果不一致。这种情况通常称为竞态条件(race condition)。所以大多数线程库都有一些同步原语,以允许线程管理器控制执行和访问。
- 全局解释器锁
python代码的执行是在python虚拟机中,尽管python解释器中可以运行多个线程,但是任意时刻只会有一个线程被解释器执行。
threading模块
**Thread类**threading模块的Thread类是主要的执行对象,其主要的属性和方法如下:![这里写图片描述](http://img.blog.csdn.net/20170726152300581?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDU4NTI0Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)两种常用的创建线程的方法:
- 创建Thread的实例,传一个函数进去
- 派生Thread的子类,重写run方法,并创建子类的实例
# coding:utf-8import threadingfrom time import sleep, ctimeloops = (4, 2)
派生子类,重写run方法
class Mythread(threading.Thread): def __init__(self, func, args, name=''): threading.Thread.__init__(self) self.name = name self.func = func self.args = argsdef run(self): self.func(*self.args)
多线程运行的函数
def loop(nloop, nsec): print 'start loop', nloop, 'at:', ctime() sleep(nsec) print 'loop', nloop, 'done at:', ctime()def main(): print 'startig at:', ctime() threads = [] nloops = range(len(loops)) for i in nloops: t = Mythread(loop, (i, loops[i]), loop.__name__) threads.append(t) for i in nloops: threads[i].start() for i in nloops: threads[i].join() print 'all done at:', ctime() if __name__ == '__main__': main()
阅读全文
0 0
- python多线程学习总结
- Python多线程(threading)学习总结
- python多进程与多线程学习总结
- python多线程模块threading学习总结
- 学习python多线程的简单总结
- python多线程总结
- Python多线程编程总结
- Python 多线程使用总结
- python多线程总结
- python--threading多线程总结
- python--thread多线程总结
- python--threading多线程总结
- Python 多线程库总结
- Python多线程学习
- python 多线程学习
- Python多线程学习
- Python多线程学习
- Python多线程学习
- 嫌Word转换太麻烦!那是你没选对转换工具
- [RK3288][Android6.0] WiFi之网络时间定期同步更新
- xml与map之间互转(java)
- [转]详解C指针
- 补题: 1001. Add More Zero 1011KazaQ's Socks
- python多线程学习总结
- yii2 composer安装 高级应用
- 关于easyUI
- ssh整合(1)
- HomeAssistant--Sonoff接入BH1750FVI光线感应器
- luhn计算最后一位校验位(ICCID,银行卡号)
- CSU-ACM2017暑假集训2-二分搜索 C
- 3d转换(立方体旋转效果)
- 广义回归神经网络(GRNN)