Форум сайта python.su
Как организовать многосокетное приложение без потоков?
Офлайн
Упс! Нашло озарение:
#! /usr/bin/python
import socket
stack = []
sstack = []
def nsocket():
global stack, sstack
sstack.append(socket.soket("""Всякие параметры"""))
if len(stack) != 0:
""" выполняем действие в стеке """
while True:
""" слушаем порт последнего сокета (sstack[len(ssatck) - 1]) """
""" новый клиент - обмениваемся сообщениями """
""" новое сообщение - отвечаем """
""" и т.д. """
""" если ничего нет - """
break
nsocket()
Офлайн
И ещё вопрос: сколько потоков может выдержать средний компьютер?
Офлайн
тройные кавычки это не комментарии а строки, не надо их так…
Офлайн
CarzilПростите, привычка…
socket.soket(“”“Всякие параметры”“”)
Офлайн
Мне кажется while True неэффективным. Рекомендую посмотреть в сторону http://docs.python.org/library/select.html А ещё может каким-то боком подойдёт twisted
Офлайн
Про всё это знаю, просто к точке-серверу (такие серверы расположены на не очень сильных компьютерах) может подключиться более 100 000 клиентов. И тогда вряд ли потоки будут эффективными.
Офлайн
Carzil
И ещё вопрос: сколько потоков может выдержать средний компьютер?
Офлайн
прочитайте все же про select, poll, epoll и неблокирующие сокеты.
Вопрос про “сколько потоков может выдержать средний компьютер” попросту некорректен.
100 000 одновременных сетевых соединение не сделать - свободный портов не хватит.
Офлайн
Я спрашиваю про потоки, а не про сетевые соединения
Офлайн