У меня есть 2 файла data.py и interp.py.Python: Импортирование из работающего экземпляра или альтернативы
data.py:
X = cPickle.load(open("X","r"))
interpret.py:
from data import X
query = raw_input("Enter query")
#do something with query and X
Объект X, который является очень большим. Я сбросил его с помощью cPickle. interp.py будет вызываться другой программой, и из-за способа импорта в настоящее время каждый раз, когда выполняется интерпретация.py, он загружает data.py, который загружает X, а так как X очень большой, требуется много времени.
Я хочу быть в состоянии сделать что-то вроде этого.
data.py:
from time import sleep
X = cPickle.load(open("X","r"))
sleep(10**10) #Sleep for eternity
, а затем запустить data.py
interpret.py:
from data import X #import from live instance of data.py
#don't load X all over again
query = raw_input("Enter query")
#do something with query and X
Как я могу это сделать? Если я не могу импортировать из живого экземпляра, есть ли альтернатива делать то, что я хочу сделать. Я не очень хорошо общаюсь, пожалуйста, скажите мне, какие части вы не понимаете, и я попытаюсь разъяснить дальше.
Я действительно не хочу добавлять еще один слой, который является базой данных. Но я думаю, вы правы. Можете ли вы предложить способ взаимодействия программ python между собой, т. Е. Активировать функции друг друга во время работы? Я использовал это, передавая через stdin, но это было бы грязно, потому что было бы несколько экземпляров интерпретации.py, я просто хотел, чтобы система обрабатывала многопоточность и не попадала в это, что было бы необходимо, если бы я добавить другую базу данных –
Нет, не совсем в вашем случае использования. Отдельные процессы могут связываться через сокеты, unix-сокеты, именованные каналы и тому подобное.Снова я бы предложил использовать базу данных. Это сделает его намного проще и гораздо менее сложным. (потому что, независимо от того, каким образом вы приближаетесь к нему, то, что вы в основном хотите сделать, это написать базу данных. И есть намного лучшие кодеры, чем вы или я, которые уже написали.) – korylprince
Я думаю, вы правы. Это было для одного из моих проектов, и добавление другого слоя означало бы изменение всех наших предыдущих документов (взгляды на архитектуру, драйверы, требования и т. Д.), Но я думаю, что могу обходным путем. Thanks –