python进程可以共享活动对象吗?

2024-03-28 10:30:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个多进程python应用程序(进程由uwsgi产生),它需要在RAM中存储变量,然后从几个不同的进程读取和更新这些变量。我知道有很多缓存选项可用,但是我找到的所有缓存选项都只能存储字符串。不同的python进程是否可以访问同一个虚拟内存,从而共享数据而不必转换甚至复制它?在


Tags: 数据字符串应用程序进程选项uwsgiram虚拟内存
1条回答
网友
1楼 · 发布于 2024-03-28 10:30:46

除了POSH, Python Shared Objects,至少做了您想做的一部分(将Python对象放在svsvipc共享内存中并从多个进程中修改它们)并可以作为开发您自己的扩展模块以满足您对wsgi派生的服务器进程的需要的起点之外,Python世界中没有太多其他东西(我知道在进程之间共享对象时,不依赖于pickle/unpickle对象。在

另一件事是Pyro,它通过进程之间的任意网络连接进行共享(因此,也可以通过Unix域套接字进行共享),以我自己的经验来看,它比内置的multiprocessing为(代理)对象管理提供的更灵活。在

您还可以看看是否可以让驱动WSGI应用程序的web服务器不是fork进程,而是使用线程;这样,您只需为共享对象缓存使用标准Python全局数据,然后就可以从所有派生的WSGI处理程序线程访问这些数据。例如,线程化WSGI服务器就是CherryPy内置的wsgiserver,我将其用于一个项目,该项目正好符合您的需求。mod_wsgi也适用于您的上下文,以防您使用worker MPM配置Apache(这样Apache线程就不会派生新进程)。在

如果所有这些都不是一个选项,那么如何将您现在在web服务器中进行的实际处理提取到一个外部进程中,该进程通过某种形式的RPC机制与之通信,从而推送工作请求和拉取数据?“后端”处理服务器可以是一个简单的多线程Python进程,它通过标准库SimpleXMLRPCServer或类似的东西提供XML-RPC接口。在

相关问题 更多 >