ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #8  
Старый 15.09.2009, 15:42
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
С нами: 9427413

Репутация: 973


По умолчанию

Эх, не о том мну Lock (если исходить из манов) один поток может вызывать только один раз, RLock один поток может вызывать несколько раз подряд.
P.S. Насчет монструозности - мну бывает заносит, начинаю изь*бываться.
Несколько процов/ядер пох ибо это threading а не multiprocessing, параша в консоль валится это бесспорно, в принципе, сделай так (ну попиарю я WRITER )
Код:
#Класс для записи данных в несколько файлов
class WRITER:
    
    #Атрибут инициализации
    def __init__(self):
        
        from threading import RLock
        
        self.Lock = RLock
        self.Locks = {}
        
        self.defaultencoding = "UTF-8"
        self.defaultout = u"out"
    
    #Атрибут записи одного элемента
    def write_one(self, data, id_=None, data_encoding=None):
        if id_ is None:
            id_ = self.defaultout
        if data_encoding is None:
            encoding = self.defaultencoding
        if id_ not in self.Locks:
            self.Locks[id_] = self.Lock()
        self.Locks[id_].acquire()
        with open(u"{0}.csv".format(id_).encode(self.defaultencoding), "a") as out:
            print data
            out.write("{0}\n".format(data.encode(encoding, "replace")))
        self.Locks[id_].release()
    
    #Атрибут записи последовательности
    def write_many(self, data, id_=None, data_encoding=None):
        if id_ is None:
            id_ = self.defaultout
        if data_encoding is None:
            encoding = self.defaultencoding
        if id_ not in self.Locks:
            self.Locks[id_] = self.Lock()
        self.Locks[id_].acquire()
        with open(u"{0}.csv".format(id_).encode(self.defaultencoding), "a") as out:
            for item in data:
                print item
                out.write("{0}\n".format(item.encode(encoding, "replace")))
        self.Locks[id_].release()
Данные ему давать в юникоде )
Потом, еще раз, в той куче монструозности есть еще один класс - PROXYS, его тоже можешь глянуть, при малюсенькой корректировке им можно заменить твой скрипт (добавить только вывод в файл и вывод в консоль, замки там уже имеются). П.С. насчет критики моей ты можешь не нервничать, по большому счету мне все равно как ты напишешь своё творение, мои посты можешь рассматривать просто как ещё один возможный вариант решения своей задачи.
П.С. смотри аву - мну мудак )
P.P.S. WRITER задуман для вывода данных в несколько разных файлов, это просто мойне парашен, в стандартной поставке есть logging, назначение его в принципе другое, но его можно переделать под аналогичные задачи, а так то мне лень было с ним разбираться =/

Последний раз редактировалось login999; 15.09.2009 в 15:46..
 
Ответить с цитированием
 



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Proxy FAQ iv. Анонимность 75 01.05.2010 13:24
mIRC: proxy script by elimS elimS2 PHP 10 23.03.2009 22:13
Прокси: Как вас вычислить если вы под анонимным прокси Geveres Статьи 0 19.11.2005 17:02



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.