Требуется предложение - Сеть в Python - Хорошая идея? - PullRequest
4 голосов
/ 10 августа 2009

Я рассматриваю программирование сетевых функций моего приложения на Python вместо API C / C ++. Предполагается, что использование сети заключается в передаче текстовых сообщений между двумя экземплярами моего приложения, аналогично игре, проходящей позиции игроков как можно чаще по сети.

Хотя модули сокетов python кажутся достаточными и зрелыми, я хочу проверить, существуют ли ограничения модуля python, которые могут быть проблемой на более позднем этапе разработки.

Что вы думаете о модуле сокета python:

  1. Это надежное и достаточно быстрое программное обеспечение для производства?
  2. Существуют ли известные ограничения, которые могут быть проблемой, если мое приложение. нужна более сложная сеть, чем обычные клиент-серверные сообщения?

Заранее спасибо,

Пол

Ответы [ 4 ]

9 голосов
/ 10 августа 2009

Проверьте Twisted , движок Python для работы в сети. Имеет встроенную поддержку TCP, UDP, SSL / TLS, многоадресной рассылки, сокетов Unix, большого количества протоколов (включая HTTP, NNTP, IMAP, SSH, IRC, FTP и другие)

3 голосов
/ 10 августа 2009

Python - это зрелый язык, который может делать практически все, что вы можете делать в C / C ++ (даже прямой доступ к памяти, если вы действительно хотите навредить себе).

Вы обнаружите, что вы можете написать красивый код в нем за очень короткое время, что этот код читается с самого начала и что он останется читаемым (вы все равно будете знать, что он делает, даже после возвращения через год) .

Недостаток Python заключается в том, что ваш код будет несколько медленным. «В некоторой степени», как в «может быть слишком медленным для определенных случаев». Таким образом, обычный подход - писать как можно больше на Python, потому что это сделает ваше приложение поддерживаемым. В конце концов, вы можете столкнуться с проблемами со скоростью. Пришло время подумать о том, чтобы переписать часть вашего приложения на C.

Основными преимуществами этого подхода являются:

  1. У вас уже есть запущенное приложение. Переводить код с Python на C гораздо проще, чем писать его с нуля.
  2. У вас уже есть запущенное приложение. После перевода небольшой части Python на C, вам просто нужно протестировать эту небольшую часть, и вы можете использовать остальную часть приложения (которая не изменилась), чтобы сделать это.
  3. Вы не платите цену заранее. Если Python достаточно быстр для вас, вам никогда не придется выполнять дополнительную оптимизацию.
  4. Python намного, намного мощнее, чем C. Каждая строка Python может сделать то же самое, что 100 или даже 1000 строк C.
1 голос
/ 10 августа 2009

Python, который EVE использует в Интернете, - это StacklessPython (http://www.stackless.com/),), и, насколько я понимаю, они используют его для того, как он реализует многопоточность с помощью тасклетов и еще много чего. Но так как сам Python может обрабатывать такие вещи, как MMO с 40 тыс. Человек онлайн, я думаю, он может делать все что угодно.

Это плохой ответ и не совсем ответ на ваш вопрос, скорее дополнение к предыдущему ответу.

Алан.

1 голос
/ 10 августа 2009

Чтобы ответить на вопрос № 1, я знаю, что, помимо прочего, EVE Online (MMO) использует вариант Python для своего серверного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...