Найти - Пользователи
Полная версия: А потоки на питоне разделяют нагрузку на несколько процессоров?
Начало » Флейм » А потоки на питоне разделяют нагрузку на несколько процессоров?
1
Alex_Kutsan
Или может какие виды потоков разделяют нагрузку на несколько процессоров?
Или разделение происходит на более низком уровне и заморачиваться этим надо когда кодишь на С?
Enchantner
Alex_Kutsan
разделяют, это обычные системные потоки. И, как и в С, в питоне 1000 потоков - это чаще всего плохое решение.
Alex_Kutsan
Я не собираюсь их делать 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'
Enchantner
Alex_Kutsan
Зачем? Создайте пул потоков и обрабатывайте таски с его помощью. И не придется морочиться с количеством потоков.
Alex_Kutsan
Весь смысл в безсерверности( если я вас правильно понял). Тоесть Юзеры должны общатся как в безсерверной сети.
Rodegast
Насколько я помню из за GIL не разделяют. Т.е. в один момент времени может обрабатываться только один поток. Если нужно распараллелить код по ядрам используй процессы (модуль multiprocessing).
Alex_Kutsan
А есть идеи как протестить?
Андрей Светлов
Alex_Kutsan, прочитал топик. Не понял вопроса обсуждения.
О работе GIL я писал: http://asvetlov.blogspot.com/2011/07/gil.html
Что вам непонятно?
Alex_Kutsan
Про GIL Почитал. Интересно, познавательно. Вы советуете пробовать multiprocessing для много поточности разбивающейся на все ядра.
Вот небольшая документация http://docs.python.org/library/multiprocessing.html . Хотелось бы на самом деле проверить действительно ли оно загружает все ядра. Как возможно реализовать данное? просто создать 3-4 потока и посмотреть в SystemMonitor? Или в винде какую-то анологичную улиту?
Андрей Светлов
да
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB