Чтение и запись в / из памяти в Python - PullRequest
1 голос
/ 23 марта 2010

Давайте представим ситуацию: у меня есть две программы на Python.Первый запишет некоторые данные (str) в память компьютера, а затем завершит работу.Затем я запускаю вторую программу, которая будет считывать данные в памяти, сохраненные первой программой.

Возможно ли это?

Ответы [ 8 ]

4 голосов
/ 23 марта 2010

Сортировка.

python p1.py | python p2.py

Если p1 записывает в стандартный вывод, данные отправляются в память. Если p2 читает из stdin, он читает из памяти.

Проблема в том, что нет "Я запусту вторую программу". Вы должны запустить обе программы, чтобы они разделяли соответствующую память (в данном случае это буфер между stdout и stdin.)

2 голосов

Что это за глупые ответы? Конечно, вы можете делить память так, как вы просили, нет технической причины, по которой вы не сможете сохранить память, кроме отсутствия API пользовательского режима.

В Linux вы можете использовать сегменты разделяемой памяти, которые сохраняются даже после того, как программа, которая их создала, исчезла. Вы можете просматривать / редактировать их с помощью ipcs(1). Чтобы создать их, см. shmget(2) и соответствующие системные вызовы.

В качестве альтернативы вы можете использовать разделяемую память POSIX, которая, вероятно, более переносима. См shm_overview(7)

Полагаю, вы можете сделать это в Windows, как this .

2 голосов
/ 23 марта 2010

Храните ваши данные в «памяти», используя такие вещи, как базы данных, например, dbm, sqlite, shelve, pickle и т. Д., Где ваша вторая программа может забрать позже.

1 голос
/ 23 марта 2010

Может быть, постер говорит о чем-то вроде общей памяти?Посмотрите на это: http://poshmodule.sourceforge.net/

1 голос
/ 23 марта 2010

Вы также можете настроить постоянную область разделяемой памяти и сделать так, чтобы одна программа записывала ее, а другая читала.Тем не менее, настройка таких вещей в некоторой степени зависит от базовой операционной системы.

1 голос
/ 23 марта 2010
1 голос
/ 23 марта 2010

Первый из них запишет некоторые данные (str) в память компьютера, а затем завершит работу.

Затем ОС проверит, что вся эта память обнулена, прежде чем любая другая программа сможет ее увидеть.,(Это важная мера безопасности, так как первая программа могла обрабатывать выписку по счету или иметь ваш пароль).

Вам необходимо записать в постоянное хранилище - возможно, на диск.(Или вы можете использовать виртуальный диск, но вряд ли это повлияет на реальную производительность).

В качестве альтернативы, почему у вас есть 2 программы?Почему не одна программа, которая выполняет обе задачи?

1 голос
/ 23 марта 2010

Нет.

После выхода первой программы ее память полностью исчезает.
Вам необходимо выполнить запись на диск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...