Задать вопрос
  • Почему Python multiprocessing нестабилен?

    @nirvimel
    Хорошо, что вы указали в тегах Windows, это все объясняет. Под Windows нет простого способа "раздвоиться" процессу при вызове multiprocessing.Process, поэтому осуществляется очень сложная эмуляция этого поведения. При этом функция target выдирается из модуля, запускается в отдельном интерпретаторе, а все параметры сереализуются передаются и десереализуются перед вызовом target, при этом инициализация модуля в новом интерпретаторе выполняется частично (инициализируется только глобальный контекс). Подробнее об этом, например, тут, есть еще одна очень хорошая статья где подробно рассмотрен этот механизм, но сейчас не найду ссылку.

    Коротко о том, как готовить multiprocessing под Windows:
    1. Разделять процессы (вызов multiprocessing.Process()) как можно раньше в коде.
    2. По возможности избегать инициализации любых ресурсов и глобальных переменных до разделения. Учитывайте, что этот код выполняется во всех процессах независимо и может давать кучу сторонних эффектов.
    3. Не передавать через args никаких сложных объектов с "поведением" (кроме объектов из самого multiprocessing, он сам знает как их правильно передавать), только голые данные (примитивы или объекты состоящие только из примитивов), которые сериализуются без сторонних эффектов.
    4. Создавать дочерние процессы один раз, и на протяжении всего времени работать с ними посредством обмена сообщениями через Pipe/Queue. Не порождать новые процессы в цикле вычислений в момент "когда понадобятся".
    5. Queue при попытке записи/чтения может блокировать процесс, если при этом происходит запись/чтения в/из нее в другом процессе. (Думаю, именно это и происходит в коде в вопросе).
    6. Лучше использовать Pipe, который в худшем случае блокирует один процесс, а не все, как Queue.
    7. При создании процесса можно передавать ему два Pipe (input одного + output другого), в вызывающем процессе хранить соответствующие им коннекторы и только при помощи их общаться с дочерним процессом.
    8. Можно не делать process.join(), а просто читать результаты из output Pipe, они прочтутся только после того как попадут туда, что дальше будет происходить с процессом уже не важно (можно поставить return после записи в Pipe в дочернем процессе).
    Ответ написан
    4 комментария
  • Управление памятью в С++?

    petermzg
    @petermzg
    Самый лучший программист
    Понятия "мусор" в С++ нет, так как не должно быть безхозных обьектов, если такие появляются, это называется "утечкой памяти".

    В С++ бывает 2 типа использования памяти.
    1. На стеке. Такую память по особому выделять не нужно и освобождать тоже.
    Пример:
    int a = 3;
    2. В "куче". В этом случае уже вы отвечаете за выделение и освобождение памяти.
    Работает через оператор new. Или функции malloc, calloc и т.п.
    int* p = new int;
    delete p;
    Ответ написан
    Комментировать
  • Математическая алгоритмизация и область применения?

    @kstyle
    что вы понимаете под математической алгоритмизацией?
    стандартные алгоритмы - да, без них никак. я так и не понял, согласны вы с этим или сомневаетесь?
    вообще, неплохо бы читать вопрос пару раз перед публикацией. набор слов местами.
    Ответ написан
    2 комментария
  • Как сохранять чат канала Twitch?

    Denormalization
    @Denormalization
    Twitch использует обычный IRC протокол для чата + авторизация с oauth токеном.
    Токен получается тут https://twitchapps.com/tmi/

    Подключаемся к серверу irc.twitch.tv , авторизируемся, заходим на канал и общаемся\сохраняем сообщения.
    Ответ написан
    Комментировать
  • Что нажимать в окне q-flash при загрузке windows?

    gbg
    @gbg Куратор тега Windows
    Любые ответы на любые вопросы
    Нажать F10, вынуть флешку. Включить. Флешку больше не забывать

    20 лет назад такие же вопросы начинали задавать пользователи, позабывшие в дисководе дискету.
    Ответ написан
    3 комментария
  • Как снять защиту от записи с системных шрифтов?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Дайте права тому пользователю под которым пытаетесь это сделать.
    Ответ написан
    Комментировать
  • Шаблонные функции. Какие преимущества?

    но меня смущает вызов 2 дополнительных функций в шаблоне
    1. Функции заинлайнятся, за производительность тут переживать не стоит.
    2. У вас немного разные алгоритмы. В шаблоне никто не запрещает вам пройтись циклом по итераторам и посчитать среднее тем же способом, что и в первом варианте.
    3. Использование stl-функций предпочтительнее своего велосипеда. Читать код легче. Я увидел accumulate и сразу подумал о свёртке. А в первый пример пришлось вчитываться. К тому же он ещё и не оптимальный - ведь деление можно вынести из цикла.
    4. Данный вариант с шаблоном намного гибче - его можно использовать с любым контейнером, который реализует итератор.
    Ответ написан
    2 комментария
  • Qt как создать много окон внутри одного?

    @Mercury13
    Программист на «си с крестами» и не только
    Сам не работал с этим под Qt, но называется это «многодокументный интерфейс» и простейший пример тут.
    doc.qt.io/qt-5/qtwidgets-mainwindows-mdi-example.html

    Также можно погуглить «Qt MDI».
    Ответ написан
    1 комментарий
  • C++ сеть. Как работать с сетью в C++?

    romy4
    @romy4
    Exception handler
    та ладно?! не гуглится "с++ работа с сетью"?
    Ответ написан
    3 комментария
  • Как правильно расположить IP адрес?

    athacker
    @athacker
    Шо это за трэш вообще? :-) Условие задачи явно неполно. Либо вы не полностью сформулировали условие, либо опустили бОльшую часть контекста. Что сделать-то нужно? Что означает "разместить IP-адрес"?
    Ответ написан
    1 комментарий
  • Что возвращается в хэдере в случае отсутствия клиентского адреса в базах GeoIP?

    SkiF_TLT
    @SkiF_TLT
    Ничего не будет содержаться в ответе. Т.к. $geoip_country_code вернет false, то nginx просто не передаст заголовок, в котором нет значения.

    Вот тут человек из-за этого голову чуть не сломал: serverfault.com/questions/463971/httpgeoipmodule-geoip-country-code-is-blank :)
    Ответ написан
    Комментировать
  • Как сделать подогрев воды?

    iG0Lka
    @iG0Lka
    фотограф. радиолюбитель.
    тогда все просто — суем кипятильник, и по градуснику смотрим какой нагрев и отключаем при достижении.
    Можно более продвинуто — покупаем кипятильник 500Вт, ставим диммер ( рассчитаный на 800Вт и выше).
    Далее градуируем ему шкалу в градусах, отмечая их по градуснику.
    При эксплуатации можно сразу на максимум включать, и при достижении скажем 70°, ставить регулятор на эту отметку. в результате будет даже поддерживать температуру.
    Ответ написан
    Комментировать
  • Разработка приложений под node-webkit

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Два приложения ушло в продакшен: раз, два. Обе программы работают с девайсами через ком-порт. В первом случае в ноде-вебкит оболочку не паковал, а использовал локальный-веб сервер, где и размещалась основная логика и он динамически генерировал GUI на хтмл и там еще пара аякс-скриптов. Это связано с тем, что изначально все планировал в браузере сделать, а уже потом узнал про вебкит и его заюзал. Так сказать проба пера — имеет ли смысл переходить на веб-GUI.
    Второй вариант пошел чуть другим путем: разделил логику программы и GUI, соответственно вся логика GUI на JS с менюшечками, драг энд дропом и другими плюшками, вся логика работы с девайсом в отдельном приложении с вебсокет-сервером.
    Надо сказать, что вебсокеты довольно удобный механизм взаимодействия с браузером. GUI прицепил к экзешнику ноде-вебкит, защиту не применял пока, но планирую. Чтобы хоть что-то было, ибо оно все равно распаковывается в TEMP и там все лежит/остается лежать в открытом виде. В идеале хотелось бы сделать несколько иной механизм работы: чтобы не распаковывалось на диск, а сразу использовалось бы из памяти. Но все равно, кому надо — просто сделает дамп памяти процесса и вытащит все, что ему надо. Время задержки на локалхосте в среднем 1-2 мс, что очень даже хорошо. Единственная особенность: веб-сокет сервер надо делать с несколькими потоками для приема данных, иначе пакеты теряются при непрерывном потоке от браузера. Т.е в цикле с браузера идут мессаги на сервер, а в силу особенности данных все сообщения надо обрабатывать по-очереди в одном потоке: просто запись трех чисел в переменную(т.е. ресурсоемкости никакой), так все равно большая часть мессаг не доходит. Поэтому просто сделал очередь на JS и месагe о приеме от сервера.
    В общем, на данный момент могу точно сказать, что опыт в целом положительный, GUI меняется и переделывается очень легко, независимо от сложности. Опять же, глюки/ошибки в GUI не приводят к крешу всего приложения и пользовательских данных.
    Ответ написан
    Комментировать
  • Как сбросить пароль в 7.0 версии прошивки iOS? Или как откатить ее на имеющуюся резервную копию?

    @T-D-K Автор вопроса
    В общем, решение есть.
    «Если вспоминать что я точно делал после 4000 ошибки, то это примерно следующие действия: зажал и удерживал до полного отключения клавишу включения и клавишу хоум. При этом телефон был отключен от провода. После того как телефон выключился попробовал включить его. Телефон включился и запросил подключения к айтюнс. После этого восстановление прошло полностью. Затем iTunes запросил активацию телефона с помозью прежнего AppleID. Пос активации синхронизировал сохраненные в iTunes данные с обновленным телефоном. Процедура установки четырехсимвольного пароля стандартна и от нее не отвертеться. Единственное, что сразу сделал после того как завершил начальные настройки — выключил в настройках (настройки — основные — защита паролем) защиту блокировки паролем»
    Ответ написан
    2 комментария
  • Системы видеонаблюдения с распознаванием лиц

    Insspb
    @Insspb
    Системный администратор
    www.macroscop.com/
    Используем. Есть возможность поиска по лицу в архиве. Требует много ЦП. В целом нам нравится и система и система лицензирования.
    Ответ написан
    4 комментария
  • Как получить изображение с камеры, подключенной к другому компьютеру?

    Ключевое слово RTP… OpenCV умеет и транслировать, и получать поток через rtp. В качестве сервера можно использовать VideoLAN (VLC). Зачем там Java?
    Ответ написан
    4 комментария
  • Недорогое видеонаблюдение для дома: выбор платформы и реализации?

    ipswitch
    @ipswitch
    IT-инженер
    Опять же, сделал бы проще.
    ru.ivideon.com/microdigital-mdc-i4240/
    + «облачный» сервис Ивидеона.
    Из оборудования — только камеры и роутер…
    Ответ написан
    Комментировать
  • Недорогое видеонаблюдение для дома: выбор платформы и реализации?

    Я бы взял старый системник, установил на него какой-нибудь спецсофт и подключил IP-камер в нужном количестве. Плюсы такого решения: не нужно заморачиваться с платой захвата, при необходимости камеры можно прокинуть в интернет. С китайскими регистраторами аналоговых камер связываться не советую: сталкивался с ними два раза, оба раза мне не понравилось. Хотя это вопрос везения, наверное.
    Из софтовых решений могу посоветовать бесплатную версию AxxonNext: 16 каналов, терабайт архива, детекторы. Работать можно как и с китайскими noname-устройствами (если те поддерживают ONVIF, PSIA или просто умеют отдавать видео по RTSP), так и с чем-то более приличным. В последнем варианте можно и настройками камеры управлять, и встроенные детекторы камер (т.е. не нагружающие сервер) использовать.
    Ответ написан
    2 комментария
  • Как правильно настроить взаимодействие с Word через COM

    foxyovovich
    @foxyovovich
    habrahabr.ru/post/162473/

    Настройка разрешения для COM:
    Далее идем в Start->Administrative Tools->Component Services
    Разворачиваем меню Component Services->Computers->My Computer->DCOM Config
    В списке ищем необходимые нам приложения COM (как правило все они начинаются со слов Microsoft… )
    Жмем правой кнопкой по интересующему выбираем Properties переходим на закладку Securety в секции Access Permissions ставим точку в Customize и жмем на кнопку Edit
    В появившемся окне жмем add и добавляем пользователя который имеет права на запуск apache (вводим в нижнее поле логин пользователя и жмем Check Names если все нормально, то винда его найдет, жмем ок)
    В списке выбираем добавленного пользователя и ставим ему галочку Remote Acceess
    Подтверждаем все изменения (жмем ok 2 раза)
    Ответ написан
    1 комментарий
  • В ресторане копируют карты и переписывают их данные — куда обращаться?

    @JDima
    Рекомендую не звонить в колл-центр банка, а обращаться к ним по мылу. Если первая попытка не прокатила, то надо попробовать еще раз.

    Ну и полиция может попытаться уговорить вас не писать заявление, но не принять заявление они не могут. Попытка мошенничества по идее, уголовка.

    Но с другой стороны, состава преступления действительно нет. Ситуация примерно как в том анекдоте — «судите за изнасилование, прибор-то есть». Наверняка какие-то правила МПС нарушены, но вряд ли катастрофично.
    Ответ написан
    2 комментария