关于python并发与并行,看到有许多不同版本的解释,官方回应应该是最标准的,不过有比官方去看官方文档更有趣的方案就是自己去验证。如果想要自己验证python并发与并行,就需要先设计验证方案。在这里设计一个简单的业务场景,有业务场景,思考起来会更有依据一些。

假设需求:写一个数据接口,测试其并发承压极限

一、需求简要分析:对于数据接口测试,一般就是直接访问其数据接口,然后查看其返回结果,通过其返回值,也可以称为响应值来判断访问是否成功。这是通过返回结果来判断,一般在接口端会有访问记录。在这样一个模型中,我们其实要明确我们想在这个实践中做的事情,我们想要去分析python的并发与并行。所以多线程和多进程的方式一定是都会进行相关测试的。在这里我们其实还可以提出另外一套解决方案。

在访问接口的同时,监控后台进程变化情况,通过对进程变化的情况来分析并发与并行的变化情况。上述描述是一部分简述,实现起来可能会复杂一些。其实起始在提出这个问题的时候,在文中其实出现了另外一个问题,就是你如何判断你调用的thread或multiprocess方式是否启动,以及如果你同时开启了一万个线程(在一个4核8线程的机器上),你会发现他有运行,接口也有访问,你在逻辑中写的是并发运行,但是你看到接口中的返回结果,他们执行时间并不相同,其实是有差异的。所以这个时候会有更多的问题呈现出来,如果有一个合理的验证方案,在实践过程中会更高效。

二、在上述描述中,使用一台机器进行的测试。对于并发运行的测试远远不够,所以如果想要得到最终的实验成果,需要更多的处理器核心。但在实际生产中,没有那么大的机器,按照当前的解决方案,是把多台机器拥有的能力集中起来(分布式)。即把多台机器通过一台机器控制,然后通过主控机器向其他机器发送指令,然后其他的机器返回一个结果,这样就可以继续进行,在执行过程中,要保证同步执行,而且每台机器上也是以并发的方式运行。(感觉这里其实已经有了分布式计算的影子存在了)。如果想要实现这套方案,就需要解决另外一个问题,如何把多台机器的能力集中起来?(其实在这里就是如何通过一台机器控制多台机器)如果把这个问题解决掉,那么分布式计算的底层原理到时候理解起来应该会更加容易一些。