Как из функции Python вытащить переменную?

Есть функция из которой нужно вытащить одну переменную. return нельзя использовать так как используется threading который не возвращает то что возвращает функция. Нужно получить переменную data из функции read_sok как глобальную чтоб к ней можно было обратиться.
def messageShow(message, alias):
    def read_sok():
        while 1:
            data = sor.recv(1024)
            data = data.decode("utf-8")
            data_list = data.split()
            if data_list[1] != alias:
                print(data)
            time.sleep(1)

    server = '192.168.1.11', 9090  # Данные сервера
    # Вводим наш псевдоним
    sor = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sor.bind(('', 0))  # Задаем сокет как клиент
    sor.sendto((alias + ' Connect to server').encode('utf-8'), server)  # Уведомляем сервер о подключении
    potok = threading.Thread(target=read_sok)
    potok.start()
    while 1:
        sor.sendto(('[' + alias + '] ' + message).encode('utf-8'), server)
        break
  • Вопрос задан
  • 607 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 3
@Karpion
Записать значение этой переменной в глобальную переменную.
Ответ написан
@fantik22
from threading import Thread

def foo(bar):
    return bar

class ThreadWithReturnValue(Thread):
    def __init__(self, group=None, target=None, name=None,
                 args=(), kwargs={}, Verbose=None):
        Thread.__init__(self, group, target, name, args, kwargs)
        self._return = None
    def run(self):
        print(type(self._target))
        if self._target is not None:
            self._return = self._target(*self._args,
                                                **self._kwargs)
    def join(self, *args):
        Thread.join(self, *args)
        return self._return
twrv = ThreadWithReturnValue(target=foo, args=('Hello, world!',))

twrv.start()
print(twrv.join())   # prints Hello, world!

Взято отсюда
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы