Загрузка...

Как совместить 2 яп?

Тема в разделе Python создана пользователем Bellomore 28 янв 2025. 276 просмотров

  1. Bellomore
    Bellomore Автор темы 28 янв 2025 4274 13 мар 2022
    В общем, бот на питоне, необходима обработка изображений, Pillow слишком долгий и я хочу юзать canvas в node js

    Как мне сделать так, чтобы бот продолжал воркать, но изображения редачились через другой скрипт? И вообще есть ли смысл от этого мува?

    переписывать бота на ноду не варик
     
    28 янв 2025 Изменено
    1. даня
      Bellomore,
      Чтобы соединить два языка программирования, таких как Python и Node.js, для выполнения определённых задач, нужно наладить коммуникацию между ними. Вот несколько подходов:


      1. Использовать взаимодействие через HTTP



      Напиши на Node.js сервер (например, с использованием Express.js), который будет принимать изображения, обрабатывать их через canvas и возвращать результат.
      В Python можно использовать библиотеку requests для отправки изображений на сервер Node.js и получения обработанных данных.
      Плюсы:

      Простая реализация.
      Можно легко масштабировать.

      Минусы:

      Небольшая задержка из-за сетевых запросов.




      2. Использовать обмен данными через файлы



      Python может сохранять изображение на диск, а скрипт на Node.js будет следить за папкой, обрабатывать файл и сохранять результат.
      Для реализации наблюдения за файловой системой в Node.js можно использовать fs + chokidar.
      Плюсы:

      Легко дебажить (все файлы наглядно видны).

      Минусы:

      Медленнее из-за чтения/записи на диск.




      3. Межпроцессное взаимодействие (IPC)



      Запусти скрипт на Node.js как отдельный процесс из Python с использованием subprocess. Передавай данные (например, изображение в формате base64) через stdin или пайпы.
      Пример:import subprocess
      import json

      # Пример передачи изображения (в base64)
      image_data = "..." # base64-строка изображения
      node_script = subprocess.Popen(
      ["node", "process_image.js"],
      stdin=subprocess.PIPE,
      stdout=subprocess.PIPE,
      text=True
      )
      response, _ = node_script.communicate(input=json.dumps({"image": image_data}))
      print(response)


      В Node.js скрипт читай данные из process.stdin, обрабатывай и возвращай результат.
      Плюсы:

      Минимальная задержка.

      Минусы:

      Более сложная отладка, особенно с большими данными.




      4. Вебсокеты



      Если нужно двустороннее взаимодействие в реальном времени, можно поднять WebSocket-сервер в Node.js и подключиться к нему через Python (websockets или socket.io).
      Плюсы:

      Подходит для постоянного взаимодействия.

      Минусы:

      Сложнее настроить, чем REST.




      Есть ли смысл?



      Если тебе нужна более быстрая обработка изображений, то canvas может дать прирост производительности, особенно при сложных операциях.
      Однако, если задача не требует высокой скорости или обработки в реальном времени, проще продолжать использовать Pillow и оптимизировать код или настройки (например, использовать многопоточность через ThreadPoolExecutor).


      Попробуй сначала проверить производительность canvas для своей задачи и решить, оправдывает ли она затраты на реализацию. Если что-то непонятно или нужны примеры — пиши!
    2. даня
  2. Nekro3
    Nekro3 28 янв 2025 Закажи разработку тут - lolz.live/threads/7578402/
    сервер напиши, который будет принимать запрос, у себя обрабатывать и тебе кидать байты фото
     
  3. MALWARE
    MALWARE 28 янв 2025 мяукаю 12 040 12 мар 2021
    сделать апи на одном яп, вызывать его с другого
     
    28 янв 2025 Изменено
  4. 525
    525 28 янв 2025 Заблокирован(а)
    Чтобы бот на Python обрабатывал изображения через canvas в Node.js, ты можешь использовать подход с взаимодействием между двумя процессами — Python-ботом и Node.js-скриптом. Это можно сделать с помощью API (например, REST или WebSocket) или обмена данными через файловую систему
     
  5. braconn1er
    braconn1er 29 янв 2025 22 8 окт 2023
    JS тоже не сказать, чтоб особо шустрый... Попробуй, вдруг твоя задача делается через ImageMagick? Всякие там обрезать картинку, пережать, изменить размеры - он все может. И он точно быстрый.
     
Top
Загрузка...