Carzil
Ноя. 11, 2010 13:55:58
Как организовать многосокетное приложение без потоков?
Carzil
Ноя. 11, 2010 14:04:16
Упс! Нашло озарение:
#! /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
Ноя. 11, 2010 14:06:04
И ещё вопрос: сколько потоков может выдержать средний компьютер?
Zubchick
Ноя. 11, 2010 14:06:35
тройные кавычки это не комментарии а строки, не надо их так…
Carzil
Ноя. 11, 2010 14:16:04
Carzil
socket.soket(“”“Всякие параметры”“”)
Простите, привычка…
AlexKiriukha
Ноя. 11, 2010 14:19:59
Мне кажется while True неэффективным. Рекомендую посмотреть в сторону
http://docs.python.org/library/select.html А ещё может каким-то боком подойдёт twisted
Carzil
Ноя. 11, 2010 14:24:02
Про всё это знаю, просто к точке-серверу (такие серверы расположены на не очень сильных компьютерах) может подключиться более 100 000 клиентов. И тогда вряд ли потоки будут эффективными.
Carzil
Ноя. 11, 2010 14:44:13
Carzil
И ещё вопрос: сколько потоков может выдержать средний компьютер?
Андрей Светлов
Ноя. 11, 2010 19:28:38
прочитайте все же про select, poll, epoll и неблокирующие сокеты.
Вопрос про “сколько потоков может выдержать средний компьютер” попросту некорректен.
100 000 одновременных сетевых соединение не сделать - свободный портов не хватит.
Carzil
Ноя. 11, 2010 19:44:24
Я спрашиваю про потоки, а не про сетевые соединения