С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/75: Рейтинг темы: голосов - 75, средняя оценка - 4.75
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818

Вернуть значение из потока

13.01.2019, 17:28. Показов 15139. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожайлуста, нужно вернуть list из потока. Делаю так:
Python
1
2
3
4
5
6
7
8
9
10
import codecs
from multiprocessing.pool import ThreadPool
pool = ThreadPool(processes=1)
 
def loadChannels():
    with codecs.open('/home/diman/fav_full.txt', 'r', encoding='utf8') as fav:
        return fav.read().splitlines()
 
res = pool.apply_async(loadChannels())
val = res.get()
Получаю:

File "/usr/lib/python2.7/multiprocessing/pool.py", line 572, in get
raise self._value
TypeError: 'list' object is not callable

Суть в том, что нужно показывать в интерфейсе логотип ожидания, пока дынные загружается из файла. Иначе при открытии приложение просто подвисает на несколько секунд.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.01.2019, 17:28
Ответы с готовыми решениями:

Вернуть значение из потока
как из этого класса вернуть значение переменной msg.getMsg() в главный класс import java.util.concurrent.BlockingQueue; public...

Вернуть значение из потока
Не могу понять задания. Запускается th1 и th2. th1 запускает th2(4kb stack) и анализирует, в случае если это необходимо информацию...

Вернуть значение из второго потока первому
Как это сделать?) Мне требуется вернуть значение из потока, который работает одновременно с главным, и чтобы главный увидел это...

3
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
13.01.2019, 18:24
Возврат из потока
Python
1
2
3
4
5
6
7
8
9
10
from threading import Thread
 
def foo(bar):
    print ('hello {}'.format(bar))
    return 'foo'
 
thread = Thread(target=foo, args=('world!',))
thread.start()
ret = thread.join()
print (ret)
Добавлено через 5 минут
ппрогресс-бар
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/python3
# -*- coding: utf-8 -*-
 
import sys
from PyQt5.QtWidgets import (QWidget, QProgressBar,
    QPushButton, QApplication)
from PyQt5.QtCore import QBasicTimer
 
 
class Example(QWidget):
 
    def __init__(self):
        super().__init__()
 
        self.initUI()
 
 
    def initUI(self):
 
        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)
 
        self.btn = QPushButton('Start', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)
 
        self.timer = QBasicTimer()
        self.step = 0
 
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('QProgressBar')
        self.show()
 
 
    def timerEvent(self, e):
 
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Finished')
            return
 
        self.step = self.step + 1
        self.pbar.setValue(self.step)
 
 
    def doAction(self):
 
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            self.timer.start(100, self)
            self.btn.setText('Stop')
 
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
13.01.2019, 18:49  [ТС]
Dax, С переменной понятно. Со списком не работает. По вашему примеру:
Python
1
2
3
4
5
6
7
8
9
10
11
12
from threading import Thread
import codecs
 
def foo(path):
    with codecs.open(path, 'r', encoding='utf8') as fav:
        fav_list = fav.read().splitlines()
        return fav_list
 
thread = Thread(target=foo, args=('/home/diman/fav_full.txt',))
thread.start()
ret = thread.join()
print (type(ret))
Получаю NoneType

P.S. Это не PyQT. Плагин для Kodi
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
13.01.2019, 19:10
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
import queue
import threading
import time
 
def long_function(q): # некая функция, которая выполняется какое-то время,
    n=0
    while n<10:
        if n<3:
            time.sleep(2)
        else:
            if n<8:
                time.sleep(3)
            else:
                if n<11:
                    time.sleep(1)
        n=n+1
        q.put_nowait(n)  # собственно какой-то способ как отдавать на каждой итерации переменную
 
 
qe = queue.Queue()
t = threading.Thread(target=long_function, args=[qe])
t.start()
 
while t.is_alive(): # пока функция выполняется
    n = qe.get()
 
    print(n)
    print(type(n))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.01.2019, 19:10
Помогаю со студенческими работами здесь

Как вернуть значение функции из потока (boost) ?
Есть основной цикл, который принимает команды из вне. Требуется при получении этой команды в потоке выполнить расчеты и выполнить...

Как вернуть матрицу из потока?
Хочу сделать вычисления в своём потоке, форму в своём и вывести результат(эту самую матрицу) на форму. namespace ТП { public...

Вернуть html из асинхронного потока
Здравствуйте, необходимо получить html сервера из асинхронного потока. Есть код: public String httpPost(final String url, final...

Как вернуть строку из потока
Всем привет. Приложение работает так : после клика по кнопке запускается поток, загружающий кое-какие данные с сайта, затем парсит их и...

Как можно в progressBar вернуть прогресс нужного потока?
На разных фрагментах(экранах) начинаю скачку файла и именно на лаяуте располагается progressBar, при переходе с экрана на экран progressBar...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru