AP计算机科学A(APcomputer science A)复习备考攻略视频教程
43756 人在学
Python支持的并发方式分为多线程并发与多进程并发。从概念上讲,多进程并发即运行多个独立的程序,其优点是,并发处理的任务是由操作系统来管理,不足之处是程序与进程之间的通信和数据共享不便;多线程并发是由程序员管理并发处理的任务,这样就便于线程间共享数据。Python对多线程和多进程的支持都比一般编程语言更高级,最小化了需要我们完成的工作。
下面大家跟随小编一起来了解一下Python并发中的进程与线程。
线程。
多线程几乎是每个程序猿在使用每种语言时首先想到的解决并发问题的工具,它能有效地利用CPU资源。但是,多线程带来的程序复杂性也是不可避免的,特别是竞争资源的同步问题。
但是在python中,由于使用了全球解释锁的原因,代码不能同时在多核上并发运行,也就是说,Python的多线程不能同时运行,很多人会发现,在使用多线程改进自己的Python代码之后,程序的运行效率却下降了,这是多么令人痛心的事情啊!若要了解更多细节,建议阅读本文。事实上,使用多线程编程模型是非常困难的,程序员很容易犯错误,这并非程序员的错误,因为并行思维是反人类的,我们大多数人的思维都是串行的,冯诺依曼设计的计算机架构也是基于顺序执行的。因此,如果你一直无法处理你的多线程序,恭喜你,你是一个思维正常的程序猿。
Python提供两组线程接口,一组是thread模块,提供基础、低级接口,使用Function作为线程运行器。另一组是threading模块,提供基于对象的更容易使用的接口,可以继承Thread对象实现线程,还提供其他与线程相关的对象,如Timer、Lock。
使用thread模块的例子。
使用threading模块的例子。
或JavaStyle。
进程。
因为前面提到的全局解释锁问题,Python下比较好的并行方式是使用多个过程,这样可以非常有效地利用CPU资源,实现真正意义上的并发。当然,这个过程的费用比线程要高,也就是说,如果你想一个令人惊叹的并发过程,你需要考虑你的机器是否有一颗强大的心。
Python的mutliprocess模块与threading接口相似。
因为线程共享相同的地址空间和内存,线程之间的通信非常简单,但过程之间的通信更加复杂。常见的过程间通信包括管道、消息队列、Socket接口等。
Python的mutliprocess模块提供了包装好的管道和队列,可以方便地在过程中传递信息。
在Python过程中同步使用锁,喝线程也是如此。
此外,Python还提供了进程池Pool对象,便于管理和控制线程。
Python实现并发编程最常用的方法就是多进程和多线程,所以,要掌握Python并发编程,线程和进程的相关知识一定要掌握好。
>>>>>>点击进入Python专题