Уведомления

Группа в Telegram: @pythonsu

#1 Май 6, 2011 11:09:14

rip86oz
От:
Зарегистрирован: 2011-03-14
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Без блокировки: сокеты и UI. Возможно?

Весь код находится в нескольких файлах. Чтоб запустить нужны все). Упростить чтоб запустилось - тоже почти невозможно.
Попробую ещё упростить чтоб было более наглядно:

def recurs_mod_loop(pi,i) :
...
node = conn_pipes[pi][i]
if node.workloop_in() >= 0 :
if i < max_conn_pipes[pi] :
recurs_mod_loop(pi,i+1)
...

while True :
...
pi = 0
while pi < len(conn_pipes):
recurs_mod_loop(pi,0)
pi += 1
...
Вобщем тут в рекурсивной функции recurs_mod_loop(pi,i) вызывается функция workloop_in() класса node. workloop_in() не должна блокировать цикл. При этом где будет GUI-шный node, сокетный, сколько их будет, в каком порядке - не известно.

Что-то наподобие вашего примера я запускал - как раз с ГТК и циклом который отписывается через некоторый интервал времени.

ЗЫ. питон - разработка быстро идёт, что нравится. Не нравится - GIL.



Отредактировано (Май 6, 2011 11:13:36)

Офлайн

#2 Май 6, 2011 11:17:27

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Без блокировки: сокеты и UI. Возможно?

Я вам состряпал пример

import threading
import math
import time

def t1():
for i in range(10):
v=0
for i in xrange(500000):
v+=math.sin(i)
# time.sleep(5)
print "echo1"

th=threading.Thread(target=t1)
th.start()
for i in range(10):
v=0
# time.sleep(0)
a=input()
print "echo0"
th.join()
Легко можете убедиться что пускается 2 треда, Никаких побед одного над другим нет пока не лочится в интерпретаторе.



Офлайн

#3 Май 6, 2011 11:28:07

rip86oz
От:
Зарегистрирован: 2011-03-14
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Без блокировки: сокеты и UI. Возможно?

Ммм…. ах блин! IDLE лочит - такой подлости не ожидал. А обычный терминал нет.)Так-с-с-с.. Сейчас с ГТК попробую.
У вас линукс или венда?

Спасибо огромное… таки не знал, что IDLE зло. Хотя частично догадывался.)



Отредактировано (Май 6, 2011 11:31:33)

Офлайн

#4 Май 6, 2011 11:48:41

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Без блокировки: сокеты и UI. Возможно?

У меня и то и другое. Рад был помочь. IDLE в самом деле не очень приспособлен для мультитреда. ГУИ вобще под IDLE лучше не пускать.



Офлайн

#5 Май 6, 2011 11:55:27

rip86oz
От:
Зарегистрирован: 2011-03-14
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Без блокировки: сокеты и UI. Возможно?

Учту. Спасибо ещё раз.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version