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 модуль.

Другие вопросы по тегам