Классы потоков PythonPython

Программы на Python
Ответить
Anonymous
 Классы потоков Python

Сообщение Anonymous »

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

Класс GUI полностью ориентирован на взаимодействие с пользователем и будет иметь код типа «если вы нажмете здесь, запустите этот метод веб-логики». Графический интерфейс должен находиться в отдельном потоке, поскольку метод weblogic может работать медленно, и поэтому ожидание его завершения приведет к тому, что графический интерфейс не будет отвечать на запросы. Хорошей новостью является то, что код графического пользовательского интерфейса не имеет возможности изменять какие-либо данные внутри потока веб-логики, поэтому блокировка не является проблемой. (Графический интерфейс просто вызывает метод веб-логики с соответствующими переменными, а затем обрабатывает полученный результат.)

Класс веб-логики включает в себя несколько методов и конструкторов, и выполнение некоторых методов может занять много времени. Класс также включает конструкторы, которые необходимы для всех методов класса. (Подумайте об идентификаторе пользователя, пароле, URL-адресе доступа к API и тому подобном)

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

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

Вот псевдокод, иллюстрирующий то, чего я пытаюсь достичь:

Код графического интерфейса:

class GUI():
def createGUI(self):
# create GUI layout here

def button1(self):
# if clicked
outputtodisplay = weblogic.filelist()
# display outputtodisplay

def button2(self)
# if clicked assume that we have a file selector box which provides a filename
weblogic.uploadfile(filename)
# show an upload success indicator


Веб-логика:

class weblogic():
def __init__(self, count, instance):
# run some stuff to setup
self.uid = xxx
self.pwd = yyy
self.url = zzz

def listfiles():
# get file list using uid, pwd, url
return output

def uploadfile(self,filename):
# upload file using uid, pwd, url
return success/failure


Подробнее здесь: https://stackoverflow.com/questions/353 ... ng-classes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»