Уведомления

Группа в Telegram: @pythonsu

#1 Март 26, 2011 12:06:34

Bdfy1
От:
Зарегистрирован: 2009-11-03
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать скрипт "thread-save" ?

есть скрипт:

import os, sys, time
from threading import Thread
from threading import currentThread

import SimpleXMLRPCServer

servAddr = ("localhost", 8000)

serv = SimpleXMLRPCServer.SimpleXMLRPCServer(servAddr)

tt = []

import SimpleXMLRPCServer

class myThread(Thread):

def __init__ (self,p):
self.p = p
Thread.__init__(self)

def run (self):
t = currentThread()
while 1:
n = random.random()
tt[self.p] = self.p + '!!!'
time.sleep(n)


def rn():
mythreads = []
for p in (1,2,3):
t = myThread(p)
mythreads.append(t)
t.start()

return 1
def test():
return tt
serv.register_function(rn)
serv.register_function(test)
serv.register_introspection_functions()
python multithreading thread-safety

если я правильно понимаю нужно лочить tt на момент добавления в него информации ? В tt хочется хранить информацию по всем thread типа статуса. Или есть другой более красивый способ ?



Отредактировано (Март 26, 2011 12:12:03)

Офлайн

#2 Март 26, 2011 13:44:52

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Как сделать скрипт "thread-save" ?

Вот в данном конкретном случае присвоение значения элементу списка - атомарная операция



Офлайн

#3 Март 26, 2011 13:45:42

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Как сделать скрипт "thread-save" ?

>если я правильно понимаю нужно лочить tt на момент добавления в него информации ?
конкретно в данном примере лочить не надо, имхо.
только надо tt инициализировать: tt = *4

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version