Ленивая загрузка - каков лучший подход?

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

Я бы взял классический подход ООП и создал бы класс, представляющий датчик.

class X4M300():
    def __init__(self, options):
        # Initialise things required to sample sensor including the device options
        # Also get the device information and store it in local variables
        # Create a local variable that stores the sensor value
    def get_sample():
        # sequence of things required to trigger sensor to start sampling, get sample and save the value into the local variable, essentially the try_xep() method.

Затем в основном методе вашего приложения PyQt создайте экземпляр класса датчика и передайте опции как аргумент.

sensor = X4M300(options)

Тогда вы можете сделать что-то вроде:

def ConnectModule(self):
    sensor.get_sample()

    self.ui.itemnumber_box.setText(sensor.itemnumber)
    self.ui.ordercode_box.setText(sensor.ordercode)
    self.ui.firmwareid_box.setText(sensor.firmwareid)
    self.ui.version_box.setText(sensor.version)
    self.ui.serialnumber_box.setText(sensor.serialnumber)
14
задан Community 23 May 2017 в 12:07
поделиться

6 ответов

Лучшая ленивая загрузка избегает его ;) Потокобезопасность является непосредственной проблемой, которую необходимо будет решить. У меня нет количества того, как часто я видел, что производственные системы с 8 ядрами CPU выполняют ленивую загрузку 8 раз для каждого ленивого используемого шаблона загрузки. По крайней мере, на стартапах сервера все ядра сервера имеют тенденцию оказаться в тех же местах.

Позвольте платформе DI создать его для Вас вместо этого, если Вы можете. И если Вы не можете, я все еще предпочитаю явную конструкцию. Таким образом, все виды волшебства AOP просто не сокращают его со мной, пойдите для явной конструкции вне класса. Не помещайте его в классе человека, просто делайте сервис, который создает объекты надлежащим способом.

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

14
ответ дан 1 December 2019 в 13:10
поделиться

Я говорил о решении, которое я использую для выполнения ленивой загрузки здесь

1
ответ дан 1 December 2019 в 13:10
поделиться

Можно использовать Lazy<T> класс я говорил о здесь: Что надлежащий путь состоит в том, чтобы ввести зависимость от доступа к данным для ленивой загрузки?

Существует также ссылка на более подробное сообщение в блоге там...

4
ответ дан 1 December 2019 в 13:10
поделиться

Можно использовать Виртуальный Шаблон "proxy", наряду с шаблоном The Observer. Это дало бы Вам ленивую загрузку без класса Человека, имеющего явно заданные знания о том, как загружаются Дочерние элементы.

1
ответ дан 1 December 2019 в 13:10
поделиться

Я думаю, что это - точно вид проблемы, которая лучше всего решена AOP (например, PostSharp). Имейте свою ленивую загрузку как аспект и затем используйте ее для украшения безотносительно свойства, Вы хотите быть загруженными лениво.Отказ от ответственности: не попробовали его; просто думая, что это должно работать.

0
ответ дан 1 December 2019 в 13:10
поделиться

Я просто задал связанный вопрос здесь, но это было более тяжело на гвозде Неизменности и Потокобезопасности. Много хороших ответов и комментариев. Можно найти это полезным.

0
ответ дан 1 December 2019 в 13:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: