Найти - Пользователи
Полная версия: Без блокировки: сокеты и UI. Возможно?
Начало » Python для экспертов » Без блокировки: сокеты и UI. Возможно?
1 2
rip86oz
Весь код находится в нескольких файлах. Чтоб запустить нужны все). Упростить чтоб запустилось - тоже почти невозможно.
Попробую ещё упростить чтоб было более наглядно:
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.
doza_and
Я вам состряпал пример
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 треда, Никаких побед одного над другим нет пока не лочится в интерпретаторе.
rip86oz
Ммм…. ах блин! IDLE лочит - такой подлости не ожидал. А обычный терминал нет.)Так-с-с-с.. Сейчас с ГТК попробую.
У вас линукс или венда?

Спасибо огромное… таки не знал, что IDLE зло. Хотя частично догадывался.)
doza_and
У меня и то и другое. Рад был помочь. IDLE в самом деле не очень приспособлен для мультитреда. ГУИ вобще под IDLE лучше не пускать.
rip86oz
Учту. Спасибо ещё раз.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB