Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3495 posts.

Python для экспертов » mpi4py обаботка словарей (dict) » Май 29, 2015 13:22:42

Пытаюсь разобраться с использованием MPI в Python, а именно с mpi4py.

Есть большой словарь, который необходимо обработать в параллельном режиме. Разобрался как передать на все узлы словарь целиком, как обрабатывать тоже более-менее понятно. А вот как потом поочередно получить модифицированные данные на главном узле понять не могу.

Код отправки выглядит так (словарь намеренно упрощенный)
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()
if rank == 0:
  data = {'1': [0], '2': [0]}
else:
  data = None
data = comm.bcast(data , root=0)
# проверяем наличие на узлах
print "[%02d]%s" % (rank, data)

Пробовал использовать gather() но ничего не выходит. С recv() вроде бы получается, но в этом случае необходимо блокировать выполнение на время отправки/приема данных. Кто-нибудь может подсказать как организовать получение данных?

Web » скрипт на python не работает на хостинге! » Май 28, 2015 22:38:22

Добрый вечер!
Есть скрипт на python который собирает данные с post (cgi) запроса и отпраляет мне на e-mail (smtplib), грубо говоря это форма обратной свзяи. На локальном пк с запущеным сервером работает и письма доставляются, а на хостинге с подержкой python и cgi скрипт обрабатываеться успешно, об этом говорит лог “POST /cgi-bin/callme.py HTTP/1.0” 200 1065, но почта не доставляется.
Подскажите какие могут быть подводные камни при использвании python скрипта на реальном хостинге.
Спасибо!

Python для новичков » Jedi + Sublime Text 3 » Май 28, 2015 15:53:21

Кто пользуется такой связкой, подскажите пожалуйста имеется ли там возможность создания или редактирования лайв темплейтов? Если да, то где найти. Например объявляю класс, срабатывает автокомплит:
class ClassName(object):
	"""docstring for ClassName"""
	def __init__(self, arg):
		super(ClassName, self).__init__()
		self.arg = arg
Хочу маленько поменять темплейты. Спасибо большоее заранее. Уж очень привлекает шустрота SubLime'а.

Python для новичков » SQLalchemy 'Deadlock found when trying to get lock; try restarting transaction' » Май 27, 2015 12:14:45

Ребята уже 2 недели бьюсь с этой проблемой не знаю как решать есть у меня таблица заданная так

class table(Base):
    engine = create_engine(url)
    metadata = MetaData(bind=engine)
    __table__ =  Table('table', metadata, autoload = True)
    session = scoped_session(sessionmaker(bind=engine, autoflush=True, expire_on_commit=True, autocommit=False)) 

данные которые в нее пишу так

update_count = 0 
for item in data.items():
       update_count +=1
       param_row = tables.table.session.query(tables.table).filter(tables.table.uid == item[0]).first()
       param_row.param_1 = item[1][1]
       param_row.param_2 = item[1][0]
#         tables.table.session.query(tables.table).filter_by(uid = item[0]).with_lockmode("update").update({'param_1':item[1][1], 'param_2':item[1][0]}) # как вариант записи которым пробывал 
#         tables.table.session.query(tables.table).filter(tables.table.uid == item[0]).with_lockmode("update").update({'param_1':item[1][1], 'param_2':item[1][0]}) # как вариант записи
        if update_count > 99: 
            tables.table.commit()
            update_count = 0         
локально в mysql у меня пишется все без вопросов, причем всеми вариантам

как пишу на сервер ошибка двух типов:

выбивает в этом месте:
param_row = tables.table.session.query(tables.table).filter(tables.table.uid == item).first()

либо на закоммиченных вариантах, тоесть при самом апдейте до коммита в базу не доходит.

sqlalchemy.exc.OperationalError: (OperationalError) (1213, ‘Deadlock found when trying to get lock; try restarting transaction’)

sqlalchemy.exc.OperationalError: (OperationalError) (1205, ‘Lock wait timeout exceeded; try restarting transaction’


пробывал по разному и с помощью MySQLdb
    update_count = 0 
    for item in data.items():
            update_count += 1
            cur.execute("""
            INSERT INTO table
                (uid, params_1, _params_2)
            VALUES 
                (%s, %s, %s) 
            ON DUPLICATE KEY UPDATE 
               params_1  = VALUES(params_1), 
               params_2   = VALUES(params_2) ;
                       """, (item[0], item[1][0], item[1][1]))
            if update_count > 99:
                con.commit()
                update_count = 0    
тут таже ошибка.
Пробывал коммитить чаще не могу понять в чем проблема.

Флейм » Калининград, сходка, технари » Май 25, 2015 17:52:16

Так-с, Калининградский народ, кто подскажет несведущему, а нет ли в городе какого-нибудь клуба, тусовки, да просто какого-нибудь места, где можно пообщаться с людьми связанными с сиим занятием? Не знаю насчет суровых “за 40 лет с хвостиком” бородачей олдскульно пищущих на асме и дизассемблирующих прошивки, а может быть даже вчерашних выпусников, что пять лет учили 1С и ВНЕЗАПНО111! узнавших, что 1С, тащем-то, языком программированием-то и не является (не будем устраивать святую войну, но.. это так ), но может быть так же людей, которые учили дельфи, потом перешли на джаву, руби, питон и прочее, пишут скрипты для себя, пользуются никсами и вообще, самые умные и красивые ^^
Так-то у нас в Калининграде много достойных и даже легендарных выходцев из айти-сферы. В том числе, игровой. Кто помнит вангеров?
Вооот. Хочется пообщаться, может пивка попить или еще чего. Опытом поменяться и прочее человеческое социальное взаимодействие. А если ничего подобного нет, тогда может попытаться собраться на сходочку или еще чего-нибудь интересное замутить. Ну и да, речь не только об айти, но и о прочих технарях. Просто интересно было бы пообщаться с дружелюбными (и не очень) человеками, познакомиться, может даже подружиться.
Спасибо за внимание.

GUI » Перенос по словам в Label » Май 24, 2015 11:15:18

Всем привет. Как можно сделать перенос текста по словам в tkinter Label. Максимальное кол-во символов в строчке 34. Если можно, киньте пример кода. Заранее спасибо.

GUI » Tkinter на Symbian » Май 23, 2015 12:45:32

Чуток портировать под второй питон я смог TK но проблема в том что он не хочет создавать root=Tk()
Может кто знает как решить?
И еще как можно сделать хороший интерфейс на питоне под симбиан?UPD: сенсорный смарт

Python для новичков » Вопрос по мультипоточности » Май 22, 2015 12:21:42

Собственно у меня есть app.py, который запускает два потока: 1) SMTPServer 2) Polling при помощи threading.Thread. Всё работало прекрасно, но тут появилась нужна в классе смтп сервера обработку письма выносить в отдельный поток, так как при его получении ид\т много парсинга и другие письма стоят в очереди. Собственно вынес я весь парсинг в отдельный класс и запускаю по точно такому же сценарию:

# init threads
thread = threading.Thread(target = SMTPParser, args = (self._config, conn, addr, ))
# start threads
thread.start()

И вот тут то вот и начинаются проблемы. У меня лог вида ' –> %(levelname)s: %(message)s' Так вот при логировании лишь первое логовое сообщение приходит из Thread-1, все же остальные от SMTPServer. Тоесть всё, что логируется внутри SMTPParser класса за исключением первой месаги идёт от SMTPServer

P.S.
При создании потоков для SMTPServer и Polling я называю потоки именем класса. Для SMTPParser не указываю - оно автоматом Thread-1, Thread-2, Thread-3 и тд

Флейм » Всероссийская онлайн-конференция для интернет-предпринимателей iBIZ CONF 2015 » Май 22, 2015 08:42:59



Со 2 по 5 июня 2015 года компания “Практикум” проводит всероссийскую онлайн-конференцию для интернет-предпринимателей.

Зарегистрироваться на онлайн-конференцию

Кому будет интересна конференция:
– Владельцам онлайн-бизнеса, желающим увеличить охват аудитории
– Стартаперам, которые хотят узнать, как реализовывать бизнес с минимальными затратами
– Интернет-предпринимателям, стремящимся выстроить эффективную стратегию
– Тем, кто только мечтает начать свой бизнес и освободиться от офисного рабства

Выступают на конференции успешные предприниматели и такие специалисты в своей области, как:

Алексей Авдеев “Calltouch”
Дмитрий Кот «Агентство продающих текстов»,
Руслан Татунашвили “Callbackhunter”,
Николай Хиврин “Altweb Group”,
Сергей Балакирев “Имсайдер”,
Артур Латыпов “Seo интеллект”,
Николай Хлебинский “Retail Rocket”,
Евгений Новиков “Convert Monster” и еще 16 экспертов бизнеса в онлайне.

Спикеры помогут найти ответы на такие вопросы организации интернет-бизнеса и онлайн-маркетинга:

Как продать боль и удвоить конверсию
Каковы основные ошибки продающих текстов
Как открыть интернет-агентство и что делать, когда кончаются деньги
Какие секреты у яндекс директа и как использовать списки ретаргетинга
Что такое коллтрекинг и зачем он нужен.
Какие новые каналы привлечения клиентов

Просто заходите и выбирайте подходящий для вас тариф!

Посмотреть программу и зарегистрироваться на конференцию iBIZ CONF 2015

Флейм » Мы в поиске Python/ Django разработчика в крутой проект! » Май 21, 2015 17:19:29

Мы в поиске Python/ Django разработчика, который будет совместно с командой, работающей над интересной b2b-финансовой системой, делать наш проект еще более крутым и удобным!

Требования:
-Отличное знание Python (опыт активной разработки от 1-2х лет)
-Богатый опыт использования фреймворка Django
MongoDB
-Опыт в client-side разработке, HTML, CSS
-Знание верстки
-Знание Unix/Linux

Задачи преимущественно – синхронизация бэк-энда с фронтом.

Личностные качества:
-Коммуникабельность
-Чувство юмора!
-Желание учиться
-Умение работать в команде
-Четкое изложение своих мыслей

Взамен мы предлагаем:
-Интересные и разнообразные задачи
-Участие в одном из самых перспективных проектов
-Возможность выйти на качественно новый уровень профессионального развития
-Финансовые ожидания обсуждаем индивидуально (в зависимости от опыта, готовы обсудить до 100к)
-Комфортный офис в центре деловой активности (м. Деловой центр / Выставочная, Москва-Сити, Башня Империя) на 36 этаже с великолепной панорамой

Ну и замечу, что команда собралась отличная! Скучно точно не будет

Итак, если ты хорошо разбираешься в Python+Django+MongoDB, скорей звони +7 925 728 74 76!

Python для новичков » идентификация клиента в twisted » Май 20, 2015 23:27:38

Всем привет! Я пишу сервер с использованием twisted. К серверу могут подключаться несколько клиентов, сервер может принимать от них сообщения и обрабатывать их. Результат должен отправлять только одному клиенту. Сразу после установления соединения клиент присылает на сервер строку вида “ima:name”, где в качестве name используется UserID. Нужно как-то идентифицировать клиент-ресивер по UserID, чтобы сервер мог знать, кому отправлять сообщения. Первое, что пришло в голову - запомнить номер клиента при подключении:
num = len(self.factory.clients)-1
 print "this client is", num
Но клиенты могут подключаться и отключаться, номер клиента в self.factory.clients может меняться. Как решить проблему идентификации клиента-ресивера?
Далее привожу участок кода, отвечающий за подключение клиентов к серверу и обработку соообщения с UserID.
class IphoneChat(Protocol):
    def connectionMade(self):
        self.factory.clients.append(self)
        print "clients are ", self.factory.clients
    def dataReceived(self, data):
        a = data.split(':')
        command = a[0]
        content = a[1]
        if command == "iam":
		    self.name = content
		    msg = self.name + " has joined"
		    print msg
       

Инструментальные средства разработки » Как в pyscripter сделать подстветку и шрифты как в Codeacademy » Май 20, 2015 14:33:46

Привет всем!
Очень мне нравится подсветка синтаксиса курса по Питон, как на codecademy.com
Хочу поставить такую же на pyscripter. Именно такую схему и шрифты не нашел. Возможно у кого-то есть? Либо цветовые коды этой схемы.

Python для экспертов » Кто-нибудь читал The Hacker's Guide to Python, Julien Danjou? » Май 19, 2015 23:41:56


Кто-нибудь читал The Hacker's Guide to Python, Julien Danjou?
Где-нибудь можно достать pdf-ку?

Python для новичков » Бот для онлайн игры » Май 18, 2015 10:40:36

Всем привет. Хочу написать бота для браузерной онлайн игры. Необходимости в боте нет совсем, это чисто для своего рода тренинга работы с данным ЯПом. Реализовал простяцкий боб, который работает по принципу перемещения курсора мыши и клика по определенным кнопкам, но это полная ерунда, тут и тренинга 0 и один большой жинрый минус в том что окно игры должно быть развернуто… да это даже и не бот получается, а автокликер. На многих ЯПах есть кучи туториалов для реализации данной затеи по средствам POST/GET запросов. Я в питоне полный 0, да и вообще в программировании, сейчас читаю Марка Лутца и попутно хочу маленько попрактиковаться. Подскажите пожалуйста в какую сторону копать? Может есть какие-то простые примеры…Я правильно понимаю принцип всего этого? Сначала снифером получаем результат например нажатия кнопки в игре, а потом потом просто отправляем этот результат питоном? Так получается? Как игровая администрация реагирует на подобные плюшки? Со стороны администрации видны изменения, как например нажалась кнопка? Будь то кликером или пришел результат? Конечно интервалы нажатия можно разрандомить для сходства с человеческими кликами, но суть в том видно ли это со стороны администрации как нажмаются кнопки в игре? Еще интересует то, когда я отправляю запросы, содержимое моего браузера меняется? Например если я перешел например в другую игровую локацию посредсвам запроса/ответа, локация поменяется в окне игры или надо рефрешить страницу? Хотелось бы самый простой пример для нажатия одной кнопки “Перейти в магазин”, что бы понять и принцип и все все все) И сам потренькаюсь и другу бота подкину. Заранее большое спасибо!

Python для новичков » Посоветуйте реализацию OSD, которую можно было бы подцепить к интерпретатору Python » Май 16, 2015 20:17:31

Я сделал связку vJoy и FreePIE, это эмулятор джойстика и программатор контроллеров.
FreePIE работает на python, но не поддерживает OSD, как в стиме, чтобы показывать положение виртуального джойстика.
Посоветуйте пожалуйста, как можно отобразить виртуальный джойстик?
В скрипте используются какие-то библиотеки python, можно ли подключить скомпилированные - честно говоря не знаю.

from System import Int16
from ctypes import windll, Structure, c_ulong, byref
class POINT(Structure):
   _fields_ = [("x", c_ulong), ("y", c_ulong)]
   
if starting:
   vJoy0_stat = False # данный флаг используется для включения передачи данных на джойстик
   Caps_Enabled = False # данный флаг используется для временного отключения джойстика
   vJoy[0].x = 0
   mouse_x = 0  # координаты мыши
   mouse_y = 0
   screen_x = windll.user32.GetSystemMetrics(0) # размер экрана
   screen_y = windll.user32.GetSystemMetrics(1)
   pt = POINT()
   preci = 100  # уточнитель задает точность измерений до сотых, используется, для сохранения дробной части в умножителе
   multipler_y = preci * 32768 / screen_y
# умножитель определяет, насколько нужно увеличить значение положения курсора, чтобы джойстик корректно отклонялся от центра экрана
# enable/disable mouse vJoy X/Y control by pressing CapsLock
if keyboard.getPressed(Key.CapsLock):
   if vJoy0_stat:
		vJoy0_stat = False
		Caps_Enabled = False
		vJoy[0].x = 0
   		vJoy[0].y = 0
   else:
		vJoy0_stat = True
		Caps_Enabled = True
#mouse.middleButton - средняя кнопка мыши
#mouse.rightButton .leftButton - правая или левая кнопка мыши и т.п.
# деактивация джойстика, если нажата средняя кнопка мыши и включен капслок
if mouse.middleButton and Caps_Enabled:
	vJoy0_stat = False
# активация джойстика, если отпущена средняя кнопка мыши и включен капслок
if not mouse.middleButton and Caps_Enabled:
	vJoy0_stat = True
if vJoy0_stat:
   windll.user32.GetCursorPos(byref(pt))
   if pt.x > 65536: mouse_x = 0 # добавлено, так как при выходе значения за пределы int, происходил вылет скрипта
   else: mouse_x = pt.x
   if pt.y > 65536: mouse_y = 0 # добавлено, так как при выходе значения за пределы int, происходил вылет скрипта
   else: mouse_y = pt.y
# положение джойстика определяется как положение мыши на экране - половина ширина экрана умноженная на увеличитель и разделенная на уточнитель 
   vJoy[0].x = (mouse_x - (screen_x / 2)) * multipler_y / preci
   vJoy[0].y = (mouse_y - (screen_y / 2)) * multipler_y / preci
#диагностическая часть скрипта
diagnostics.watch(vJoy0_stat)
diagnostics.watch(Caps_Enabled)
diagnostics.watch(mouse.middleButton)

Заранее спасибо за любые советы!

Python для новичков » Подтверджение сайта в вебмастере » Май 15, 2015 10:32:37

Добрый день! Подскажите есть сайт на Python, необходимо подтвердить его в Гугл вебмастере. Добавалением HTML файла в корень не работает. Пишет ошибка подтверждения. Предлагает альтернативные способы :

-Тег HTML
Додати метатег на домашню сторінку свого сайту.
-Постачальник доменних імен
Увійти на сайт постачальника доменних імен.
-Google Analytics
Використати обліковий запис Google Analytics.
-Менеджер тегів Google
Скористайтеся обліковим записом Менеджера тегів Google.

Подскажите каким лучше воспользоваться?

Django » Pre_save vs clean_fields (и pre_save exception) » Май 13, 2015 04:48:56

День добрый.
Есть самая примитивная модель. Есть простое условие, при невыполнении которого мы должны не дать юзеру создать\сохранить модель через админку. Метод save не переопределять.
Когда копал - откопал два способа: pre_save и clean_fields.
С clean_fields все классно получилось. Просто определил метод в модели, вписал простое условие, в нем сделал raise ValidationError с нужным сообщением, и оно прекрасно отрабатывает в админке.
А вот с pre_save как-то не сложилось.
@receiver(pre_save, sender=Item)
def item_pre_save_callback(sender, **kwargs):
    instance = kwargs['instance']

Даже условие отработает, если добавить. А вот как эксепшн по человечески выкинуть (или отловить) - я не понимаю, ибо что-то вроде
raise ValidationError
валит мне большую html с ошибкой.
Собственно вопросы:
- как с помощью pre_save вывести мессадж в админку, о том что модель нельзя сохранить;
- какой способ более правильный?

GUI » С Qt к Фениксу » Май 10, 2015 20:50:49

Нашёл один единственный пример интеграции pyQt в Blender. Работает, хоть и обижается на разные libpng. А, если пересобрать Блендер на libpng-16, то без проблем.
Не могу найти, как интерпретировать это c wxPython-Phoenix. Не нахожу я в доках в его event аналогов.
Нижеуказанный код позволяет запускать из блендера окно кути в немодальном режиме. При открытых окнах блендера и кути я могу между ними взаимодействовать. С Phoenix у меня этого не получается никак…
class PyQtEventLoopOp(bpy.types.Operator):
    bl_idname = "povray.map"
    bl_label = "Rainbow"
    _timer = None
    _window = None
    def modal(self, context, event):
        if event.type == 'TIMER':
            self._event_loop.processEvents()
            self._application.sendPostedEvents(None, 0) 
        return {'PASS_THROUGH'}
    def execute(self, context):
        self._application = QApplication.instance()
        if self._application is None:
            self._application = QApplication(['blender'])
        self._event_loop = QEventLoop()
        self.window = EditorWindow()
        self._timer = context.window_manager.event_timer_add(0.1, context.window)
        context.window_manager.modal_handler_add(self)
        return {'RUNNING_MODAL'}
Если подскажете, кк это переписать на wxPython3 спасибо огромное!

GUI » Python3, PyQt4 , PySide, QPainter, mask » Май 10, 2015 20:33:49

Это, вообще за пределами моего понимания.
Задача:
Нарисовать прямоугольник с альфой, вырезать и вставить туда прямоугольник меньшего размера другого цвета с другой альфой…
Я уже и QPixmap и QImage и QBitmap - пофиг, в 20 строчек это не укладывается, а потом путаница, ё-моё…cairo с wx рисовало это в 10 строчек кода…
Есть пример для кути? Если есть, то спасибо, огромное!