2017-02-18 6 views
-1

Я пытаюсь использовать значение между двумя скриптами python, я устанавливаю значение в первом скрипте с помощью singleton, но когда я получаю значение во втором скрипте, значение по умолчанию (0) возвращается.Python: общее значение всегда 0

Вот мои файлы: файл, который получает значение:

import mod #import the singleton class 

... 

    def sendDistance(self): 

     print(mod.getDistance()) #get the value 

Файл, который устанавливает значение:

import mod #import the singleton class 
... 


    mod.setDistance(35) #set the value with the singleton file mod.py 

Одноэлементный файл: (mod.py)

import distance #import the file where value is stored 
def setDistance(val): #set Value function 
    distance.x=val 
def getDistance(): #get value function 
    return distance.x 

И файл, в котором хранится значение: (distance.py)

x=0 #the default value that should be modified from mod 

Если я попытаюсь получить значение в файле, который устанавливает значение (сделайте печать (mod.getValue())), тогда значение будет показано правильно. Но на стороне получателя значение всегда равно 0.

+1

Никакая часть этого вопроса не имеет смысла для меня. [Mcve]? – melpomene

+0

Хорошо, я отредактировал вопрос – aphi

+0

Как это полно или поддаётся проверке? – melpomene

ответ

0

Установка расстояния только устанавливает его в этом запущенном экземпляре Python. Вы можете, конечно, переписать distance.py с новым значением. Но это будет только влияет на другие скрипты при импорте этого модуля.

Если вы хотите обмениваться данными между сценариями, которые запускаются в разное время, но на том же компьютере, просто напишите эти данные в файл. Используйте легко анализируемый формат, такой как JSON.

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

Для обмена данными между сценариями, потенциально работающими на разных компьютерах, вы можете использовать модуль socket.

+0

Я уже пробовал решение с файлом, но это замедляет любой другой процесс. Как сделать многопроцессорную функцию? Как тогда файлы могут взаимодействовать? Спасибо за Ваш ответ! – aphi

+0

И переменная должна быть «живой», чтобы она не задерживалась. Есть ли возможность получить переменную непосредственно из другого файла? С импортом или так? – aphi

+0

Импорт просто загружает содержимое модуля, которое он находит на диске. –

Смежные вопросы