python - 当您只有一个核心时,是否有兴趣使用超过 1 个 worker ?

标签 python django multithreading gunicorn worker

我目前正在单核机器上设置 Gunicorn 应用程序,我的内存有限,所以我宁愿使用 1 个工作线程和 8 个线程,也不愿使用 2 个工作线程和 4 个线程。

但是,我仍然问自己关于 1 个工作人员配置可能存在的性能问题,因为 Gunicorn 官方文档建议使用以下设置。

2 * (number of cores) + 1

考虑到使用 Python 我会被 GIL native 阻止的事实如果我想要使用线程实现真正的并行性,我仍然看不到使用比核心数量更多的进程有任何兴趣。

最佳答案

这真的取决于工作量。

对于 CPU 密集型任务,您是对的。 对于 I/O(网络、存储)密集型任务,您可以利用多个线程来提高性能,即使在单个内核上也是如此。

这都是理论上的,性能瓶颈可能来自意想不到的来源。

在我看来,最好的做法是根据经验对模拟系统在生产中面临的工作负载下的几种配置进行基准测试,然后选择产生最佳结果的配置。

关于python - 当您只有一个核心时,是否有兴趣使用超过 1 个 worker ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56683011/

相关文章:

python - Django/Python - 检查用户是否上传文件 - 如果没有,显示图像

c# - 无法从其他线程使用 DependencyObject

python - scrapy mysql 返回空结果

python - 使用 imshow 绘制二维数组,设置轴值

使用下一页 token 的 Pythonic 方式

python - 何时在 Django 中创建新应用程序(使用 startapp)?

python - 删除具有给定条件的行

python - 数据插入错误 : invalid literal for int() with base 10

Python3 : detect keypresses asynchronously and communicate them to the main thread

java - 以编程方式确定哪个 Java 线程持有锁