深入学习 Linux 进程用 Go 重写了所有示例程序,通过循序渐进的方法介绍 Linux 进程的工作原理和一切你所需要知道的概念。
2021年06月16日 并发(Concurrently)和并行(Parallel)是两个不同的概念。借用Go创始人Rob Pike的说法,并发不是并行,并发更好。并发是一共要处理(deal with)很多事情,并行是一次可以做(do)多少事情。
讨论并行编程的架构和编程模型。对于初次接触并行编程技术的程序员来说,都是非常有用的概念;对于经验丰富的程序员来说,可以作为参考。
2021年07月22日
2021年07月21日 在本节中,我们将验证GIL的影响,评估多线程应用的性能。前文已经介绍过,GIL是CPython解释器引入的锁,GIL在解释器层面阻止了真正的并行运行。解释器在执行任何线程之前,必须等待当前正在运行的线程释放GIL。事实上,解释器会强迫想要运行的线程必须拿到GIL才能访问解释器的任何资源,例如栈或Python对象等。这也正是GIL的目的——阻止不同的线程并发访问Python对象。这样GIL可以保护解释器的内存,让垃圾回收工作正常。但事实上,这却造成了程序员无法通过并行执行多线程来提高程序的性能。如果我们去掉CPython的GIL,就可以让多线程真正并行执行。GIL并没有影响多处理器并行的线程,只是限制了一个解释器只能有一个线程在运行。
2021年07月21日
2021年07月21日
2021年07月21日
2021年07月21日
2021年07月21日
2021年07月21日
2021年07月21日
2021年07月21日
2021年07月21日
2021年07月21日 作为一种解释型的语言,Python的速度并不算慢。如果对速度有很高的要求的话,可以选择用更快的语言实现,比如C或C++,然后用Python调用。Python的一种常见应用场景是实现高级的逻辑。Python的解释器就是用C语言写的,即CPython。解释器将Python转换成一种中间语言,叫做Python字节码,类似于汇编语言,但是包含一些更高级的指令。当一个运行一个Python程序的时候,评估循环不断将Python字节码转换成机器码。解释型语言的好处是方便编程和调试,但是程序的运行速度慢。其中的一种解决办法是,用C语言实现一些第三方的库,然后在Python中使用。另一种方法是使用即时编译器来替换Cpython,例如PyPy,PyPy对代码生成和Python的运行速度做了优化。但是在本书中,我们将研究第三种方法。Python提供了很多可以利用并行的模块,在后面的章节中,我们将着重讨论这些并行编程的模块。
接下来,本章将介绍两种基本概念:线程和进程,以及它们在Python中的表现。
接下来,本章将介绍两种基本概念:线程和进程,以及它们在Python中的表现。
2021年07月21日
2021年07月21日
2021年07月21日
2021年07月21日
2021年07月21日 内存管理是并行架构需要考虑的另一方面,确切来说是获得数据的方式。无论处理单元多快,如果内存提供指令和数据的速度跟不上,系统性能也不会得到提升。制约内存达到处理器速度级别的响应时间的主要因素是内存存取周期。所谓存取周期就是连续启动两次读或写操作所需间隔的最小时间。处理器的周期通常比内存周期短得多。当处理器传送数据到内存或从内存中获取数据时,内存依旧在一个周期中,其他任何设备(I/O控制器,处理器)都不能使用内存,因为内存必须先对上一个请求作出响应。
2021年07月21日