Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 16, 2011 16:58:21

ReaL_HarDCorE
От:
Зарегистрирован: 2011-01-19
Сообщения: 84
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск нескольких циклов одновременно

Помогите пожалуйста, меня давно мучает вопрос как запустить несколько циклов одновременно. У меня не получается. Пока не закончится первый цикл, второй не начинает работать. И как сделать так, чтобы цикл работал на протяжении всей работы программы, но при этом могли выполняться другие функции программы. Мне кажется, что это до безобразия просто, но я не знаю как. Вот, например, как запустить эти циклы одновременно:

x,y,z=0,0,0
while 1: x+=1
while 1: y+=1
while 1: z+=1
Заранее благодарен!



Офлайн

#2 Авг. 16, 2011 20:43:16

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

запуск нескольких циклов одновременно

1 непонятно почему в Mobile, вопрос скорее для начинающих.
2 надо разобраться что вы понимаете под одновременно.
Если коротко - то вы можете хотеть логически их одновременно запустить или физически (те на разных процессорах или ядрах или вообще разных машинах).
кроме того можно запустить внутри одного скрипта (типа как в редакторе несколько документов открыть)
или можно несколько экземпляров питона пускануть. (типа запустить неколько редакторов)
самое простое:

while 1:
x+=1
y+=1
z+=1
почему это не устраивает?
Несколько тредов:
import threading

x,y,z=0,0,0

def incx():
global x
for i in range(20):
x+=1
print "incx"
def incy():
global y
for i in range(20):
y+=1
print "incy"
def incz():
global z
for i in range(20):
z+=1
print "incz"

tx=threading.Thread(target=incx)
ty=threading.Thread(target=incy)
tz=threading.Thread(target=incz)
tx.start();ty.start();tz.start()
tx.join();ty.join();tz.join()
Понимаю - не фонтан. Кроме того безсмысленно - GIL будет мешать
Процессами из документации:
from multiprocessing import Process

def f(name):
print 'hello', name

if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
ну вобщем также. Только тут запустится несколько интерпретаторов и GIL не может мешать.



Офлайн

#3 Авг. 16, 2011 20:56:53

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

запуск нескольких циклов одновременно

ReaL_HarDCorE сначала написал

doza_and
скорее для начинающих
. Потом посмотрел что постите. Приношу извинения, тут вы меня скорее чему научите :). Но все равно не понятно в чем была проблема. КПК у меня есть с питоном на борту, но почти не пишу для нее…



Офлайн

#4 Авг. 18, 2011 14:56:47

Virtuos86
От:
Зарегистрирован: 2010-11-17
Сообщения: 33
Репутация: +  1  -
Профиль   Отправить e-mail  

запуск нескольких циклов одновременно

На PyS60 1.4.5 вариант с threading не пойдёт - только если половину стандартной библиотеки перенести на телефон (но тогда можно поцеловать оперативную память на прощание, у ТС же N73 там с ней тем более не богато) -, про multiprocessing вообще можно не заикаться. Так что только thread.start_new_thread.
На PyS60 2.* threading уже вариант.
А что есть PowerCleanUp? Очередная “чистилка” системного мусора? Хотите распараллелить сбор-удаление мусора? Не знаю, не знаю. В симбо-питоне с потоками ещё хуже чем в CPython.



Офлайн

#5 Авг. 18, 2011 21:02:55

ReaL_HarDCorE
От:
Зарегистрирован: 2011-01-19
Сообщения: 84
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск нескольких циклов одновременно

Virtuos86
На PyS60 1.4.5 вариант с threading не пойдёт - только если половину стандартной библиотеки перенести на телефон (но тогда можно поцеловать оперативную память на прощание, у ТС же N73 там с ней тем более не богато) -, про multiprocessing вообще можно не заикаться. Так что только thread.start_new_thread.
На PyS60 2.* threading уже вариант.
А что есть PowerCleanUp? Очередная “чистилка” системного мусора? Хотите распараллелить сбор-удаление мусора? Не знаю, не знаю. В симбо-питоне с потоками ещё хуже чем в CPython.
PowerCleanUp это мой чистильщик, над которым я уже не работаю))))



Офлайн

#6 Авг. 19, 2011 18:29:01

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

запуск нескольких циклов одновременно

:) не разжигайте мое любопытство, поясните всеже. Вам реально треды нужны или достаточно оргранизации сопросцессов?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version