Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Флейм
  • » А потоки на питоне разделяют нагрузку на несколько процессоров? [RSS Feed]

#1 Авг. 4, 2011 17:00:07

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

А потоки на питоне разделяют нагрузку на несколько процессоров?

Или может какие виды потоков разделяют нагрузку на несколько процессоров?
Или разделение происходит на более низком уровне и заморачиваться этим надо когда кодишь на С?



Офлайн

#2 Авг. 4, 2011 17:28:32

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

А потоки на питоне разделяют нагрузку на несколько процессоров?

Alex_Kutsan
разделяют, это обычные системные потоки. И, как и в С, в питоне 1000 потоков - это чаще всего плохое решение.



Офлайн

#3 Авг. 4, 2011 17:41:51

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

А потоки на питоне разделяют нагрузку на несколько процессоров?

Я не собираюсь их делать 1000, думаю максимум 10-20, но сложность в том что потоки должны время от времени плодить свои потоки. КОгдато давно в делфе у меня такое не проконало, в си не пробовал. В питоне вполне возможно. Но таки образом ели каждый поток будет плодить потоки, то их количество может вырасити. Хотя потоки не будут плодить более 2-3. Задача например стоит сделать виртуальную телефонную сеть в которой можно отправлять сообщения, и конектится в друзья. Взять себе 1 телефон, а остальные отдать под управление ИИ. ТОесть каждый телефон - поток. он отправляет сообщение - порождение нового потока. Он получает сообщение - порождение нового потока.
Только что баловался с рекрусивным созданием потоков. Оказывается действительно возможно.

def Make_thread():
time.sleep(2)
print 'I want begin thrread'
T = threading.Thread(None,Make_thread,None)
T.start()
time.sleep(5)
print 'I did It'



Офлайн

#4 Авг. 4, 2011 18:00:10

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

А потоки на питоне разделяют нагрузку на несколько процессоров?

Alex_Kutsan
Зачем? Создайте пул потоков и обрабатывайте таски с его помощью. И не придется морочиться с количеством потоков.



Офлайн

#5 Авг. 5, 2011 00:23:54

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

А потоки на питоне разделяют нагрузку на несколько процессоров?

Весь смысл в безсерверности( если я вас правильно понял). Тоесть Юзеры должны общатся как в безсерверной сети.



Офлайн

#6 Авг. 5, 2011 15:15:48

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

А потоки на питоне разделяют нагрузку на несколько процессоров?

Насколько я помню из за GIL не разделяют. Т.е. в один момент времени может обрабатываться только один поток. Если нужно распараллелить код по ядрам используй процессы (модуль multiprocessing).



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Онлайн

#7 Авг. 6, 2011 00:18:03

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

А потоки на питоне разделяют нагрузку на несколько процессоров?

А есть идеи как протестить?



Офлайн

#8 Авг. 6, 2011 02:33:34

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

А потоки на питоне разделяют нагрузку на несколько процессоров?

Alex_Kutsan, прочитал топик. Не понял вопроса обсуждения.
О работе GIL я писал: http://asvetlov.blogspot.com/2011/07/gil.html
Что вам непонятно?



Офлайн

#9 Авг. 9, 2011 22:09:20

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

А потоки на питоне разделяют нагрузку на несколько процессоров?

Про GIL Почитал. Интересно, познавательно. Вы советуете пробовать multiprocessing для много поточности разбивающейся на все ядра.
Вот небольшая документация http://docs.python.org/library/multiprocessing.html . Хотелось бы на самом деле проверить действительно ли оно загружает все ядра. Как возможно реализовать данное? просто создать 3-4 потока и посмотреть в SystemMonitor? Или в винде какую-то анологичную улиту?



Офлайн

#10 Авг. 10, 2011 14:40:46

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

А потоки на питоне разделяют нагрузку на несколько процессоров?

да



Офлайн

  • Начало
  • » Флейм
  • » А потоки на питоне разделяют нагрузку на несколько процессоров?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version