Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
26 / 26 / 5
Регистрация: 14.05.2014
Сообщений: 250

Посоветуйте источники (книги) о многопоточном программировании

12.07.2014, 16:48. Показов 4784. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Посоветуйте пожалуйста источники (книги) о многопоточном программировании в общем и о многопоточном программировании в python в частности. Доку читал, плохо понял, нужно что то более подробное и фундаментальное.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2014, 16:48
Ответы с готовыми решениями:

Какую роль играет конструкция if __name__ == '__main__' при многопоточном программировании?
Всем привет, изучаю модуль threading для работы с несколькими потоками: import threading def doubler(number): ...

О многопоточном программировании хочу больше узнать я
Как сделать так, чтобы функция не могла вызываться одновременно нескольким потоками?

Методы Join и Invoke в многопоточном программировании
Здравствуйте, смутила меня программка по использовании RS-232. Там используется метод Join. Открыл Шилда освежить память, там он...

13
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.07.2014, 23:21
Можете в книге Программирование на Python - Марк Лутц (4-е издание, I том, 2011) почитать об этом.

Добавлено через 35 минут
Вот кстати ещё видео это будет полезно для вас http://moscowdjango.ru/meetup/... ython-why/
1
26 / 26 / 5
Регистрация: 14.05.2014
Сообщений: 250
13.07.2014, 13:27  [ТС]
а кто нибудь может сказать про эту книги?
http://www.amazon.com/Parallel... gil+python
0
42 / 42 / 7
Регистрация: 15.07.2012
Сообщений: 98
14.07.2014, 16:51
Вам зачем потоки? Для себя, разобраться или для ускорения какой-то задачи?
Если второе - то смотрите лучше на процессы, потоки упрутся в GIL, хорошая вводная по multiprocessing - тут
1
26 / 26 / 5
Регистрация: 14.05.2014
Сообщений: 250
14.07.2014, 17:05  [ТС]
Цитата Сообщение от s0rg Посмотреть сообщение
Вам зачем потоки? Для себя, разобраться или для ускорения какой-то задачи?
Если второе - то смотрите лучше на процессы, потоки упрутся в GIL, хорошая вводная по multiprocessing - тут
для решения задачи:
есть пул IP нужно проверить какие порты открыты начиная с 0 заканчивая 65534

тоже думал что из за GlL будут проблемы, а точнее скорость не измениться если я запущу через модуль threading 20 потоков однотипной задачи, но возможно я не прав
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
14.07.2014, 19:04
Если использовать 3, то gil будет меньше вреда наносить, но вообще для распаралеливания кода на python, лучше использовать процессы, будет больше прирост производительности.

Можно кстати ещё попробовать по работать с PyPy-STM. Пишут, что этому проекту удалось победить GIL.
http://morepypy.blogspot.ru/20... lease.html
Вот статья на эту тему, но я её честно говоря не читал.
0
26 / 26 / 5
Регистрация: 14.05.2014
Сообщений: 250
14.07.2014, 19:11  [ТС]
Как я понимаю:
потоки нужны, что бы обрабатывать различные события в приложении. Например: Один поток ждет поступления пакетов, второй поток выводит прогресс, третий поток принимает команды от пользователя и т.п.
процессы нужны, что бы выполнять однотипный код и уже очередью здесь будет управлять сама ОС.
поправьте если я не прав.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
14.07.2014, 19:22
Ну не совсем так, ну в принципе правильно.

Добавлено через 40 секунд
Видео посмотри, которое я тебе скинул. Ты там получишь ответы на многие или даже все свои вопросы касательно параллельного программирования и касательно того как это в python работает.
0
26 / 26 / 5
Регистрация: 14.05.2014
Сообщений: 250
14.07.2014, 19:22  [ТС]
Цитата Сообщение от tsar925 Посмотреть сообщение
Видео посмотри, которое я тебе скинул. Ты там получишь ответы на многие или даже все свои вопросы касательно параллельного программирования и касательно того как это в python работает.
смотрел, хорошее... как раз он и говорил про GIL и потоки с разным функционалом, мне же нужно кучу с одним и тем же... общую идею я понял, тем более о многопоточности он достаточно просто говорил в начале. В общем буду экспериментировать.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
14.07.2014, 19:25
Попробуй написать решение задачи при помощи потоков, используй python 3.2 или старше и все должно быть нормально.
0
26 / 26 / 5
Регистрация: 14.05.2014
Сообщений: 250
23.07.2014, 13:47  [ТС]
вот набросал черновой код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/env python3
import socket
import subprocess
import sys
from datetime import datetime
import time
import _thread
t = time.time()
def scaner(ip):
    print ('start %s' % ip)
    for port in range(1,200):
 
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(1)
        result = sock.connect_ex((ip, port))
        print (port,' ', ip)
        if result == 0:
            print ('Port %s on %s is open' % (port, ip) )
        sock.close()
_thread.start_new_thread(scaner, ('177.128.24.75',))
_thread.start_new_thread(scaner, ('186.95.102.38',))
_thread.start_new_thread(scaner, ('182.93.236.62',))
_thread.start_new_thread(scaner, ('193.200.183.154',))
_thread.start_new_thread(scaner, ('110.77.136.102',))
print(time.time()-t)
"""#scaner('177.128.24.75')
scaner('186.95.102.38')
scaner('182.93.236.62')
scaner('193.200.183.154')
scaner('110.77.136.102')"""
 
time.sleep(666666)
как понимаю, в ситуации, когда мы большую часть времени ждем (а в этой ситуации мы как раз ждем ответ от хоста) данный код будет работать максимально эффективно. приэтом в htop я вижу 5 своих потоков, значит ли это то что ОС может их автоматом распаралелить на несколько ядер? При этом в общем нагрузка на ЦП минмальна, осталось померить нагрузку на сеть. ...

Добавлено через 42 минуты
но интересно при скольких потоках количество не верных срабатываний увеличиться...
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
23.07.2014, 18:15
Цитата Сообщение от tutunak Посмотреть сообщение
При этом в общем нагрузка на ЦП минмальна
Для профилирования программы удобно использовать утилиту time http://ru.wikipedia.org/wiki/Time_(Unix).

Цитата Сообщение от tutunak Посмотреть сообщение
значит ли это то что ОС может их автоматом распаралелить на несколько ядер?
ОС хочет это сделать, но не может, по всем известной нам причине. Я сразу вам говорил, что если хотите параллельного выполнения и загрузки всех доступных ядер, то вам нужно использовать процессы.
1
26 / 26 / 5
Регистрация: 14.05.2014
Сообщений: 250
23.07.2014, 19:01  [ТС]
Цитата Сообщение от tsar925 Посмотреть сообщение
ОС хочет это сделать, но не может, по всем известной нам причине. Я сразу вам говорил, что если хотите параллельного выполнения и загрузки всех доступных ядер, то вам нужно использовать процессы.
ну теперь точно понятно). спасибо. буду смотреть в сторну multiprocessing, но пока что т.к. на сервере 1 ядро будет работать этот вариант)
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
23.07.2014, 19:07
Цитата Сообщение от tutunak Посмотреть сообщение
буду смотреть в сторну multiprocessing
Все правильно, если быть точным вам нужен класс Popen.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.07.2014, 19:07
Помогаю со студенческими работами здесь

Удаление объекта класса при многопоточном программировании
У меня есть объект класса и в нем несколько методов. Есть метод run, который вызывает метод A в новом потоке. Метод А работает в detach...

Русскоязычные книги/источники по векторам
В какой русскоязычной книге/источнике можно подробно почитать о векторах,списках, деках и т.д

Посоветуйте литературу/источники
Прошу посоветовать ссылки/литературу, в которой можно было бы узнать о таких вещах как: Пример: abstract Class Abs { ...

Qt - посоветуйте источники информации
не подскажите откудо можно прочитать про Qt ? Я вообще не имею представление о Qt.

Порекомендуйте книги или другие источники по ajax
порекомендуйте книги или другие источники по ajax.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru