26 / 26 / 5
Регистрация: 14.05.2014
Сообщений: 250

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

12.07.2014, 16:48. Показов 4786. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru