Похоже, вы пытаетесь запустить выборку датчиков и графический интерфейс как два приложения, и им потребуется именованный канал или общий файл для доступа к памяти друг друга. Для простоты вы должны запустить это как отдельное приложение.
Я бы взял классический подход ООП и создал бы класс, представляющий датчик.
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)
Лучшая ленивая загрузка избегает его ;) Потокобезопасность является непосредственной проблемой, которую необходимо будет решить. У меня нет количества того, как часто я видел, что производственные системы с 8 ядрами CPU выполняют ленивую загрузку 8 раз для каждого ленивого используемого шаблона загрузки. По крайней мере, на стартапах сервера все ядра сервера имеют тенденцию оказаться в тех же местах.
Позвольте платформе DI создать его для Вас вместо этого, если Вы можете. И если Вы не можете, я все еще предпочитаю явную конструкцию. Таким образом, все виды волшебства AOP просто не сокращают его со мной, пойдите для явной конструкции вне класса. Не помещайте его в классе человека, просто делайте сервис, который создает объекты надлежащим способом.
При представлении "волшебных" слоев, которые более или менее прозрачно, эти вещи походят на хорошую идею, но я должен все же столкнуться с реализациями, которые не имеют непредвиденных и проблематичных последствий.
Я говорил о решении, которое я использую для выполнения ленивой загрузки здесь
Можно использовать Lazy<T>
класс я говорил о здесь: Что надлежащий путь состоит в том, чтобы ввести зависимость от доступа к данным для ленивой загрузки?
Существует также ссылка на более подробное сообщение в блоге там...
Можно использовать Виртуальный Шаблон "proxy", наряду с шаблоном The Observer. Это дало бы Вам ленивую загрузку без класса Человека, имеющего явно заданные знания о том, как загружаются Дочерние элементы.
Я думаю, что это - точно вид проблемы, которая лучше всего решена AOP (например, PostSharp). Имейте свою ленивую загрузку как аспект и затем используйте ее для украшения безотносительно свойства, Вы хотите быть загруженными лениво.Отказ от ответственности: не попробовали его; просто думая, что это должно работать.
Я просто задал связанный вопрос здесь, но это было более тяжело на гвозде Неизменности и Потокобезопасности. Много хороших ответов и комментариев. Можно найти это полезным.