Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python对Web服务进行并发测试_Python - Fatal编程技术网

使用Python对Web服务进行并发测试

使用Python对Web服务进行并发测试,python,Python,我有一个需要处理大量并发利用率和容量的web服务,我需要对其进行测试。由于该服务相当专业化,它不适合典型的测试框架。测试需要模拟多个客户端同时发布到URL,解析生成的Http响应,检查数据库是否已适当更新,并确保某些电子邮件已正确发送/接收 我公司目前的观点是,我应该使用Python编写这个框架。我以前从未将Python用于多线程,在我进行研究时,我遇到了全局解释器锁,它似乎是Python大多数并发处理的基础。在我看来,GIL将阻止Python实现真正的并发性,即使在多处理器机器上也是如此。这是

我有一个需要处理大量并发利用率和容量的web服务,我需要对其进行测试。由于该服务相当专业化,它不适合典型的测试框架。测试需要模拟多个客户端同时发布到URL,解析生成的Http响应,检查数据库是否已适当更新,并确保某些电子邮件已正确发送/接收


我公司目前的观点是,我应该使用Python编写这个框架。我以前从未将Python用于多线程,在我进行研究时,我遇到了全局解释器锁,它似乎是Python大多数并发处理的基础。在我看来,GIL将阻止Python实现真正的并发性,即使在多处理器机器上也是如此。这是真的吗?如果我使用编译器将Python编译为本机代码,这种情况会改变吗?我是不是完全找错了方向,而Python是这个工作的错误工具?

您可以使用Python的多处理库来实现这一点。

假设一般的网络条件,只要您有足够的系统资源,Python的常规线程模块将允许您以比实际工作负载更高的速率模拟并发工作负载。

全局解释器锁阻止线程同时执行Python代码。当Python编译成字节码时,这一点不会改变,因为字节码仍然由Python解释器运行,这将强制执行GIL<代码>线程化通过每
sys.getcheckinterval()
字节码切换一次线程来工作

这不适用于
多处理
,因为它创建多个Python进程而不是线程。您可以拥有您的系统支持的任意多个功能,真正同时运行


因此,是的,您可以使用Python来实现这一点,可以使用
线程
多处理

谢谢!这似乎就是问题所在。根据Katrielex下面的评论,多处理似乎是这里最好的选择。谢谢。我将使用多处理选项并使用ozk建议的库。这个答案是不正确的。请看这个