gpt4 book ai didi

multithreading - 当我们已经有了多线程时,多处理有什么好处?

转载 作者:行者123 更新时间:2023-12-03 13:15:07 25 4
gpt4 key购买 nike

我对于是否对Web应用程序使用多个进程会提高性能感到困惑。 Apache的mod_wsgi提供了一个option来设置守护进程组要启动的进程数。我以前在fasttgi和fasttgi中使用过fastcgi,它也可以选择为每个fastcgi应用程序配置最大进程数。

虽然我不知道多处理如何更好,但与单进程多线程模型相比,我确实对此有所了解。例如,在多处理方案(link)中将更难以实现日志记录,尤其是当您还希望日志轮换时。而且由于无法共享内存,因此如果您在内存中缓存某些内容(最直接的方法),则会有多个重复副本。

多个进程是否更好地利用了多核计算能力,还是产生了更高的吞吐量?还是仅在某些单线程应用程序中存在?

最佳答案

如果是Python,或更具体地说是mod_wsgi使用的CPython,则问题是Python GIL。尽管您在Python中可能有多个线程,但是全局解释器锁有效地意味着一次只能有一个线程在运行Python代码。这意味着它无法在系统上正确使用多个处理器/内核。但是,使用多个进程确实允许您使用所有这些处理器/内核。

就是说,对于mod_wsgi来说,它并不是全部的Python代码,但是有很多C代码,而Apache也是C代码。在执行C代码期间,GIL被该线程解锁,这意味着以C代码运行的线程可以与以Python代码运行的线程并行运行。仍然不是最好的处理器,但是仍然可以部分使用系统上的所有处理器/内核。

对我来说,有关mod_wsgi的详细信息,请阅读:

http://blog.dscpl.com.au/2007/09/parallel-python-discussion-and-modwsgi.html
http://blog.dscpl.com.au/2007/07/web-hosting-landscape-and-modwsgi.html

关于multithreading - 当我们已经有了多线程时,多处理有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6998320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com