Python: Shared Value всегда 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 ответ
Установка расстояния только устанавливает его в этом работающем экземпляре Python. Можно конечно переписать distance.py
с новым значением. Но это повлияет только на другие скрипты, когда они импортируют этот модуль.
Если вы хотите обмениваться данными между сценариями, которые выполняются в разное время, но на одном и том же компьютере, просто запишите эти данные в файл. Используйте легко анализируемый формат, такой как JSON.
Обмен данными между различными сценариями, которые выполняются в одно и то же время в одно и то же время, более сложен. Самый простой способ - один скрипт запустить другой. Тогда вы можете использовать коммуникационные функции multiprocessing
модуль.
Для обмена данными между сценариями, потенциально работающими на разных компьютерах, вы можете использовать socket
модуль.