Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.04.2021
Сообщений: 102
PySide

Как заставить функций работать в потоке и чтобы программа не зависала на время? Pyside6

11.07.2021, 22:15. Показов 1163. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возник ещё один вопрос с Pyside. Делаю программу, которая работает с socket(клиент). После попытки подключится и отправить запрос на сервер - программа на время зависает. Помогите, пожалуйста. Как можно заставить работать эти функции в потоке и чтобы можно было получить возвращаемое значение функций?

Пример:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import socket
import hashlib
import binascii
import time
import re
 
sock = None
 
def recv(sock):
    result = ""
    done = False
    while not done:
        try:
            data = sock.recv(1024)
            for c in data:
                if c == 0x4:
                    done = True
                    break
                result += chr(c)
        except:
            print('No Connect -')
    return result
 
def connectRcon(ip, port):
    global sock
    try: 
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.connect((ip, port));
        return 'Successful connection'
    except:
        return 'Falied connection'
 
def invokeCmd(cmd, sock):
    sock.send(('\x02' + cmd + '\n').encode("utf-8"))
    return recv(sock)
 
def requestRcon(command):
    global sock
    result = invokeCmd(command, sock)
    return result
 
print(connectRcon('127.0.0.1', 22222))
print(requestRcon('help')

Не по теме:

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

0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.07.2021, 22:15
Ответы с готовыми решениями:

Как сделать, чтобы форма не зависала во время отладки для мониторинга ее работы
привет, помогите пож-та, как сделать чтобы при отладке прогр на форме происходили изменения? Т.е. у меня в цикле на форме в Picture Box'е ...

Как заставить работать событие в потоке
void __fastcall TForm1::Shape1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { static int X1; static int Y1; ...

Как сохранить в формате dxf, чтобы не зависала программа
Добрый день! Возникла проблема с АК 2013: из файла .dwg копирую полилинию и вставляю в новый файл, нажимаю "сохранить как" в .dxf...

5
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
12.07.2021, 07:35
VordyV, threading в помощь.
Есть еще asyncio, там даже уже реализовано для сокетов. Копайся в документации, направление я дал.
0
0 / 0 / 0
Регистрация: 28.04.2021
Сообщений: 102
12.07.2021, 12:29  [ТС]
Уже пытался через этот модуль сделать, но он не возвращает возвращаемое значение. Надо и возвращал и в потоке все это.
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
12.07.2021, 12:55
VordyV, используй классы, переменные или callback функции.
0
0 / 0 / 0
Регистрация: 28.04.2021
Сообщений: 102
12.07.2021, 13:18  [ТС]
Можете привести пример как мне все это засунуть в класс потока, чтобы потом можно было вызвать функции по отдельности, запустить поток? Я этого не могу понять. Как все правильно организовать, что нужно вписать в run функцию, как вызвать и получить значения из функции в классе?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
12.07.2021, 14:14
Изучай.

https://docs.python.org/3/howto/sockets.html
https://github.com/GarryGaller... _server.py
И попробуй прочитать хотя бы одну книжку по сокетам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.07.2021, 14:14
Помогаю со студенческими работами здесь

Как сделать, чтобы программа не зависала в процессе выполнения
Доброго времени суток! У меня есть программа по созданию AVI из кадров, так в тот момент, когда рендерится AVI файл, программа примерно на...

Как запустить функцию с бесконечным циклом, чтобы программа не зависала
Всем привет, не могу сообразить, как запустить функцию с бесконечным циклом, чтобы графическая форма не зависала во время обработки цикла? ...

Как сделать, чтобы при выполнении цикла программа не зависала?
Люди, подскажите. Есть цикл от 0 до 100000 , заполняю таблицу, короче замудреная операция! Как мне сделать чтобы при выполнении этого...

Как сделать чтобы программа не зависала пока ожидается подключение?
У меня во время выполнения кода сервера программа намертво зависает пока она ждёт пользователя. Как убрать это? Или подскажите как...

Заставить время работать как надо ))))
Суть проблемы: Сущ таблица Т_Заказы, для ее заполнения сущ форма Ф_Заказы. В таблице есть графа ВремяЗаказа, в форме тож сделал поле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru