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

Вопрос по threading context switching. Я слышал что до какой-то

версии питона 3.X передача управления OS от одного потока к другому происходила через каждые 100 "элементарных команд".
'''Lary Hastings (a core CPython developer): The way Python threads work with the GIL is with a simple counter. With every 100 byte codes executed the GIL is supposed to be released by the thread currently executing in order to give other threads a chance to execute code''''
Позже, этот механизм заменили на передачу управления каждые 5 миллисекунд. Я где-то это читал, но подтверждение этой информации не нашел в доке. Если это действительно так, то тогда у меня возникает глупый вопрос: Почему есть возможность отправлять больше чем 200 http requests запросов, ведь кажется что передача управления может быть не чаще чем 1000 / 5 раз в секунду? Накидал примерный код который по моей логике не может увеличивать переменную counter больше чем на 200 в секунду, но почему-то это делает. (https://pastebin.com/WH4FK8Lx). Подскажите, где я ошибаюсь?

2 ответов

19 просмотров

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

Andrey-Sapronov Автор вопроса
Tishka17
https://asvetlov.blogspot.com/2011/07/gil.html

Потрясающая статья, сильно открыла глаза о GIL и потоках в целом, спасибо огромное! Еще прочел презентацию Дэвида Бизли на которую ссылается Андрей в своей статье, тоже много полезной информации узнал. Я понял что переключение между потоками не всегда происходит каждые 5 мс, а и в любой другой момент когда другой поток отдает управление. Хотя ситуация с всего лишь 200 переключениями в сек возможна если все потоки CPU-bound и не хотят сами отдавать управление. Еще раз спасибо!!

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

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

Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
лучше скажите, причём тут паскаль?
Alexey Kulakov
23
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
#include <stdio.h> #include <stdlib.h> #include <time.h> int** generate_table(int size_matrix) { int** matrix = (int**)malloc(size_matrix * sizeof(int*)); for (int i ...
Чувак
1
@PerlBanjoBot use v5.38; sub split_on_cond($arr, $cond) { ($a, $b) = ([], []); push @{ $cond->($_) ? $a : $b }, $_ for @$arr; ($a, $b) } use Data::Dumper; warn Dumpe...
Sergei Zhmylove
10
Всем привет! как узнать, что текст в TSkLabel был выведен сокращенным ? Есть функция для TLabel которая позволяет определить , что текст выведен сокращенным function TFrmMai...
DELPHI SOLUTIONS
6
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
Дебил? Я ищу друга
Bitard 228
27
У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Карта сайта