Форум сайта python.su
Возникла задача передавать данные в нужный поток. Каждый созданный поток имеет уникальное известное имя. Возможно ли это сделать и как правильнее это реализовать?
Офлайн
в главном потоке хранить список дочерних потоков, ходить по этому списку и передавать данные
Офлайн
ИМХО, dict логичнее. Просто словарь имён потоков к потокам.
Офлайн
Queue? Только идентификаторы/имена потоков здесь не причём.
p.s. Не может быть такого понятия как хранить данные в потоке, данные хранятся в памяти, а в случае многопоточной модели (один процесс) все потоки разделяют одно и то же адресное пространство. Остаётся только решить проблему одновременного доступа к участку памяти (я предлагаю посмотреть Queue для этого).
..bw
Отредактировано (Июнь 28, 2010 18:28:56)
Офлайн
o7412369815963Для меня как раз и вопрос как передать данный в поток нужный… Извиняюсь если уж совсем что то глупое спрашиваю.
в главном потоке хранить список дочерних потоков, ходить по этому списку и передавать данные
Офлайн
bwОчереди как я понимаю не подходят, потому как допустим 20 поток начнут следить за очередью и будут брать данные не предназначенные для него.
Queue? Только идентификаторы/имена потоков здесь не причём.
..bw
Офлайн
Это задача для подготовительной группы детского сада.
Сделай 20 очередей, кто мешает. Пусть каждый поток работает только со своей.
..bw
Офлайн
Если кратко то в каждом потоке живет клиент мессенджера (имеет своё имя), необходимо отправлять сообщения от нужного имени…
Офлайн
bwПотоков может быть в один момент 20, а через минуту 100…
Это задача для подготовительной группы детского сада.
Сделай 20 очередей, кто мешает. Пусть каждый поток работает только со своей.
..bw
Офлайн
Я не вижу в этом проблемы. Альтернативный вариант, это искать платформозависимые (ОСь) решения, но тут я ничего подсказать не могу. А вообще, я настоятельно не рекомендую увлекаться потоками в Python, особенно если они выполняют ресурсоёмкие вычисления (заметно утилизируют проц.). Хотя эта рекомендация распространяется на все случаи. Речь про системные потоки, не микронити (concurrence, greenlet, stackless).
..bw
Офлайн