Потоки

Аватар пользователя IsakovAN

Написал, вот, простенький тестер скорости соединения, для служебных нужд. Все работает. Стал GUI приделывать.
Пока данные из сети принимаешь, индикатор прогреса не перерисовывается! Решил принимать данные в отдельном потоке.

Как говорится, в моей программе только одна ошибка - не запускается. Улыбка

Поток не запускается на выполнение вообще! Грустный После некоторых танцев с бубном удалось запустить. Но запуск происходил только, ПОСЛЕ ЗАВЕРШЕНИЯ ОСНОВНОГО ПОТОКА! :-?

Какие будут предложения?

Аватар пользователя unDEFER

Re: Потоки

> Пока данные из сети принимаешь, индикатор прогреса не перерисовывается! Решил принимать данные в отдельном потоке.

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

> Какие будут предложения?

Ну, вы бы код-то показали (как вы пытаетесь запускать поток), не все, ведь, телепаты ;-)

Аватар пользователя IsakovAN

Re: Потоки

Да я уже сделал. Примерно таким путем. Если интересует, могу сырци выложить.

Аватар пользователя Paranoia

Re: Потоки

Боюсь, не получится с потоками.
Помнится мне, в книге было написано, что Python пока плохо дружит с threads. Так можно запустить только простые функции, но не что-то серьезное.
Но при этом никто не мешает написать две программы - одну фронт-эндом (GUI), вторую основную, и общаться между ними через os.popen2(); или popen2.popen2();

Аватар пользователя IsakovAN

Re: Потоки

Цитата:
Помнится мне, в книге было написано, что Python пока плохо дружит с threads.

А что за книга, если не секрет?

Цитата:
Так можно запустить только простые функции, но не что-то серьезное.
Но при этом никто не мешает написать две программы - одну фронт-эндом (GUI), вторую основную, и общаться между ними через os.popen2(); или popen2.popen2();

Ну проблему эту я решил проще: timeout_add

Аватар пользователя Paranoia

Re: Потоки

Цитата:
А что за книга, если не секрет?

Молитва советского программиста: "Дай Бог памяти!"
Давно это было уж.

Но что траблы были, проверено лично. Улыбка

Стоп, когда идет запуск mainloop (и подобных), программа теряет управление. С нитями или нет? Отправляюсь учить матчасть.

Аватар пользователя Paranoia

Re: Потоки

Матчасть изучена. Улыбка

-----
#!/usr/bin/env python
import thread,time
from gtk import *

def fnt():
while 1:
print "Thread is alive."
time.sleep(1)

thread.start_new_thread(fnt,())
time.sleep(10)
window = Window()
window.show()
main()
-----
При запуске зрим сначала десять сообщений "Thread is alive" - корректная работа нити. После чего создается окно, и начинается главный цикл - сообщения не появляются.

RSS-материал