在Python中读取和写入内存

时间:2010-03-23 11:37:37

标签: python memory buffer

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

这可能吗?

8 个答案:

答案 0 :(得分:4)

排序。

python p1.py | python p2.py

如果p1写入stdout,则数据将进入内存。如果p2从stdin读取,则从内存中读取。

问题在于没有“我会启动第二个程序”。您必须启动这两个程序,以便它们共享适当的内存(在本例中,是stdout和stdin之间的缓冲区。)

答案 1 :(得分:2)

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

答案 2 :(得分:2)

这些无稽之谈的答案是什么?当然,您可以按照您的要求分享内存,除了缺少用户模式API之外,没有任何技术原因您不能保留内存。

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

或者,您可以使用POSIX共享内存,这可能更具可移植性。见shm_overview(7)

我想您可以在Windows上执行此操作,例如this

答案 3 :(得分:1)

没有

第一个程序退出后,其内存完全消失 你需要写入磁盘。

答案 4 :(得分:1)

  

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

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

您需要写入持久存储 - 可能是磁盘。 (或者您可以使用ramdisk,但这不太可能对现实世界的性能产生任何影响)。

或者,为什么你有2个节目?为什么一个程序不执行这两项任务?

答案 5 :(得分:1)

答案 6 :(得分:1)

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

答案 7 :(得分:1)

也许海报在谈论像共享内存这样的东西?看看这个:http://poshmodule.sourceforge.net/