开发者

Reading and writing to/from memory in Python

开发者 https://www.devze.com 2022-12-24 20:55 出处:网络
Let\'s imagine a situation: I have two Python programs. The first one will writ开发者_JS百科e some data (str) to computer memory, and then exit. I will then start the second program which will read th

Let's imagine a situation: I have two Python programs. The first one will writ开发者_JS百科e some data (str) to computer memory, and then exit. I will then start the second program which will read the in-memory data saved by the first program.

Is this possible?


Sort of.

python p1.py | python p2.py

If p1 writes to stdout, the data goes to memory. If p2 reads from stdin, it reads from memory.

The issue is that there's no "I will then start the second program". You must start both programs so that they share the appropriate memory (in this case, the buffer between stdout and stdin.)


What are all these nonsense answers? Of course you can share memory the way you asked, there's no technical reason you shouldn't be able to persist memory other than lack of usermode API.

In Linux you can use shared memory segments which persist even after the program that made them is gone. You can view/edit them with ipcs(1). To create them, see shmget(2) and the related syscalls.

Alternatively you can use POSIX shared memory, which is probably more portable. See shm_overview(7)

I suppose you can do it on Windows like this.


Store you data into "memory" using things like databases, eg dbm, sqlite, shelve, pickle, etc where your 2nd program can pick up later.


No.

Once the first program exits, its memory is completely gone.
You need to write to disk.


The first one will write some data (str) to computer memory, and then exit.

The OS will then ensure all that memory is zeroed before any other program can see it. (This is an important security measure, as the first program may have been processing your bank statement or may have had your password).

You need to write to persistent storage - probably disk. (Or you could use a ramdisk, but that's unlikely to make any difference to real-world performance).

Alternatively, why do you have 2 programs? Why not one program that does both tasks?


Yes.

Define a RAM file-system.

http://www.vanemery.com/Linux/Ramdisk/ramdisk.html

http://www.cyberciti.biz/faq/howto-create-linux-ram-disk-filesystem/


You can also set up persistent shared memory area and have one program write to it and the other read it. However, setting up such things is somewhat dependent on the underlying O/S.


Maybe the poster is talking about something like shared memory? Have a look at this: http://poshmodule.sourceforge.net/

0

精彩评论

暂无评论...
验证码 换一张
取 消