Кэш Python pyc не аннулируется при быстром изменении исходного кода.Python

Программы на Python
Ответить
Anonymous
 Кэш Python pyc не аннулируется при быстром изменении исходного кода.

Сообщение Anonymous »

Я пишу проект Python, исходный код которого быстро модифицируется. Я заметил, что Python, похоже, запускает старые версии программы.
a.py:

Код: Выделить всё

import b
print(b.i)
b.py:

Код: Выделить всё

# will be changed later
i = 0
c.sh:

Код: Выделить всё

for i in {1..20}; do
echo "i = $i" > b.py
sleep 0.3
echo -n "$i "
python3 a.py
done
Когда я запускаю c.sh, я вижу:

Код: Выделить всё

$ bash c.sh
1 1
2 1
3 1
4 4
5 4
6 4
7 7
8 7
9 7
10 10
11 10
12 10
13 13
14 13
15 13
16 16
17 16
18 16
19 19
20 19
$
Я прочитал https://docs.python.org/3/reference/imp ... validation. Похоже, что Python делает недействительными файлы .pyc в зависимости от времени. И похоже, что в моей системе точность времени составляет 1 секунду. Я использую Linux (Debian 13), Python 3.13.5.
Это ошибка в Python? Если нет, то как мне изменить свой проект?
Я пробовал python3 --check-hash-based-pycs всегда a.py, он не работает. python3 -B a.py работает, но мне интересно, есть ли другие способы обойти эту проблему.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»