170 похожих чатов

Здравствуйте, у меня вопрос. Почему когда я использую несколько потоков

то они расправляются нагрузку на все ядра процессора, ведь написано что потоки принадлежат процессу, а один процесс нагружает одно ядро. Но у меня получается что потоки которые принадлежат одному процессу нагружают все ядра, в чем причина?

```
import threading


def test_sleep():
while True:
pass


if __name__ == '__main__':
count_tgread = 5

list_thread = []
for x in range(count_tgread):
test_thread1 = threading.Thread(target=test_sleep,daemon=True)
list_thread.append(test_thread1)
test_thread1.start()

for th in list_thread:
th.join()
```

33 ответов

21 просмотр

> а один процесс нагружает одно ядро. ШТА? откуда ты взял эту чушь?

Каким ядром что выполнять решает ось, питон никаких гарантий насчет этого не дает

Kirill Shikhalev
Каким ядром что выполнять решает ось, питон никаки...

Питон только 1 потоку даёт выполнятся в 1 момент времени

Marat Mkhitaryan
Питон только 1 потоку даёт выполнятся в 1 момент в...

Как же вы заебали со своим GIL и одиним потоком.

Alex
Как же вы заебали со своим GIL и одиним потоком.

А что такого? Просто потоки в питоне это асинхрон на самом деле

Свободный-Веткин Автор вопроса
Alex
> а один процесс нагружает одно ядро. ШТА? отку...

Книга "Секреты Python 59 рекомендаций по написанию эффективного кода"

Свободный Веткин
screenshot Книга "Секреты Python 59 рекомендаций по написанию...

Ты прочитал текст и совершенно ни черта не понял что в нем написано.

Свободный Веткин
screenshot Книга "Секреты Python 59 рекомендаций по написанию...

Там мультипроцесс а не тхридинг, они работают по разному

Свободный-Веткин Автор вопроса
Kirill Shikhalev
А при чем тут потоки

В том что потоки нагружают все ядра процессора, хотя они запущенны в одном процессе.

Свободный Веткин
В том что потоки нагружают все ядра процессора, хо...

И опять же это ось решает кто что будет нагружать, не питон

Свободный-Веткин Автор вопроса
Kirill Shikhalev
На твоем скрине ни слова про потоки

Да, процессы могут нагружать все ядра, но почему потоки нагружают их ?

Свободный Веткин
В том что потоки нагружают все ядра процессора, хо...

Минимальной единицей диспетчеризации является поток. Как распределять процессорное время между потоками решает ОС.

Свободный-Веткин Автор вопроса
Kirill Shikhalev
А почему нет

Потому что я запускаю потоки на одно процессе. А один процесс должен задействовать одно реальное ядро, а не все сразу.

Свободный Веткин
Да, процессы могут нагружать все ядра, но почему п...

Потому что исполняются процессором потоки а не процессы

Свободный Веткин
Потому что я запускаю потоки на одно процессе. А о...

Это ось решает что задействовать, кто тебе сказал что процесс должен?

Marat Mkhitaryan
Питон только 1 потоку даёт выполнятся в 1 момент в...

Знаешь, @Tishka17, иногда мне кажется что он тут сидит и троллит окружающих.

Alex
Знаешь, @Tishka17, иногда мне кажется что он тут с...

А разве не 1 поток выполняет питоновский код в 1 момент времени?

а что 🇷🇺
А разве не 1 поток выполняет питоновский код в 1 м...

Смотря что ты понимаешь под питоновским кодом. Вот у тебя питоновский код вызывает системный вызов. Будут другие потоки работать?

а что 🇷🇺
А разве не 1 поток выполняет питоновский код в 1 м...

GIL можно отпустить, например на ожидании сокета или сисколах почти вся стандартная библиотека так и делает

Alex
spoilers!

ой, извините, я не хотел...

а что 🇷🇺
Ну это то и так понятно

Нет, это как раз таки не понятно

S V
Киньте где почитать про это

https://asvetlov.blogspot.com/2011/07/gil.html

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта