Мастерская 3/4. Кассетницы — моё спасение.
Много лет назад купил на Али простенькие модульные кассетницы с ящичками разных размеров. Сразу знал, что под электронные компоненты, но концепция их хранения менялась с тех пор неоднократно. Наконец, добрался, отсортировал всё, что было, сделал этикетки. Не сказать, чтоб много, но и свободных ячеек почти половина: можно докупать и заполнять.
А под крепеж и всякие бытовые мелочи купил серию от российской фирмы "Стелла-техник" и напечатал в них вертикальные вставки-перегородки. Что удобно, так это возможность полностью вытащить любой ящичек и взять с собой.
В целом такая система нужна чаще, чем кажется. И применяется в двух сценариях. Первый самый понятный: вам нужен, условно, винт М3 (саморез, дюбель, конфирмат итд), вы совершенно точно знаете, где его брать.
Но второй сценарий не менее важен. Вы купили шкаф, после сборки остались стяжки (наклейки, гвозди, шканты). И у вас есть совершенно определенные места, куда вы сразу же это всё складываете. Никакого захламления.
Я очень доволен. Теперь найти бы время попаять что-нибудь.
#diy#life#окр
https://wiki.python.org/moin/GlobalInterpreterLock
In #CPython, the #global#interpreter lock, or #GIL, is a mutex that prevents multiple native #threads from executing Python bytecodes at once. This lock is necessary mainly because CPython's memory management is not thread-safe. (However, since the GIL exists, other features have grown to depend on the guarantees that it enforces.)
https://docs.python.org/3/library/atexit.html
The #atexit module defines #functions to #register and #unregister cleanup functions. Functions thus registered are automatically executed upon normal interpreter termination. atexit runs these functions in the reverse order in which they were registered; if you register A, B, and C, at #interpreter#termination time they will be run in the order C, B, A.