繁体   English   中英

在Python中读写内存

[英]Reading and writing to/from memory in Python

让我们想象一下一种情况:我有两个Python程序。 第一个将一些数据(str)写入计算机内存,然后退出。 然后,我将启动第二个程序,该程序将读取第一个程序保存的内存数据。

这可能吗?

有点。

python p1.py | python p2.py

如果p1写入标准输出,则数据将进入内存。 如果p2从stdin中读取,它将从内存中读取。

问题在于没有“我将随后启动第二个程序”。 您必须启动两个程序,以便它们共享适当的内存(在这种情况下,为stdout和stdin之间的缓冲区。)

使用诸如dbm,sqlite,shelf,pickle等数据库之类的东西将数据存储到“内存”中,您的第二个程序可以在以后使用。

这些胡扯的答案是什么? 当然,您可以按照要求的方式共享内存,没有技术原因,除了缺少用户模式API之外,您不应该保留内存。

在Linux中,您可以使用共享内存段,这些共享内存段即使在组成共享内存的程序消失后仍然存在。 您可以使用ipcs(1)查看/编辑它们。 要创建它们,请参见shmget(2)和相关的系统调用。

或者,您可以使用POSIX共享内存,它可能更便于携带。 参见shm_overview(7)

我想您可以在Windows上做到这一点

没有。

一旦第一个程序退出,它的内存就完全消失了。
您需要写入磁盘。

第一个将一些数据(str)写入计算机内存,然后退出。

然后,操作系统将确保在所有其他程序看到内存之前将所有内存清零。 (这是一项重要的安全措施,因为第一个程序可能已经在处理您的银行对帐单或您的密码了)。

您需要写入永久存储-可能是磁盘。 (或者您可以使用虚拟磁盘,但这不太可能对实际性能产生任何影响)。

或者,为什么您有2个程序? 为什么不能同时执行这两个任务的程序?

您还可以设置持久性共享内存区域,并让一个程序写入其中,而另一个程序读取它。 但是,设置这些东西在某种程度上取决于底层的O / S。

也许张贴者在谈论共享内存之类的东西? 看看这个: http : //poshmodule.sourceforge.net/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM