Как работает функция reload()?
Эта функция нужна для того, чтобы перезагрузить изменившийся код из py-файла без рестарта интерпретатора.
Дело в том, что любой импортированный модуль при повторном импорте не будет перечитывать файл. Функция импорта вернёт уже загруженный в память объект модуля. Чтобы обновить код, нужно либо перезапустить всю программу, либо использовать функцию reload()
from importlib import reload
reload(my_module)
🔸 Функция reload() принимает в качестве аргумента только объект модуля или пакета. Она не может перезагрузить класс или функцию. Только весь файл целиком!
🔸 Перезагрузка пакета перезагрузит только его файл __init__.py, если он есть. Но не вложенные модули.
🔸Она не может перезагрузить ранее не импортированный модуль.
🔸При вызове функция reload() перечитывает и перекомпилирует код в файле, создавая новые объекты. После создания новых объектов перезаписывается ранее созданный неймспейс этого модуля.
Это значит, что если где-то этот модуль импортирован через import и обращение к атрибутам происходит через неймспейс (имя) модуля, то такие атрибуты обновятся.
Если какие-либо объекты из этого модуля импортированы через from то они будут ссылаться на старые объекты.
Напишем простой модуль
# mymodule.py
x = 1
Теперь импортируем модуль и отдельно переменную х из модуля
>>> import mymodule
>>> from mymodule import x
>>> print(mymodule.x)
1
>>> print(x)
1
Не перезапуская интерпретатор вносим изменения в модуль
# mymodule.py
x = 2
Делаем перезагрузку модуля и проверяем х ещё раз
>>> reload(mymodule)
>>> print(mymodule.x)
2
>>> print(x)
1
То же самое будет если присвоить любой объект переменной (даже словарь или список)
Повторный импорт обновляет значение
>>> from mymodule import x
>>> print(x)
2
🔸Созданные инстансы классов не обновятся после перезагрузки модуля. Их придётся пересоздать.
#tricks#basic
DataBackup
An easy-to-use backup Libre application for Android, however your phone needs to be rooted , unless a ROM were to include it as a system app
Support for #multi-user/double backup: same backup/restore on multiple partitions!
Cloud: fully supports #Rclone, which can perform local mounting of network drives from various service providers.
100% data integrity: all data will be retained and there is no need to reconnect or download additional packages.
Complete: Split Apk, Arm32, Arm64, x86, x86_64, Android9+.
Fast: Support: tar lz4 zstd (default).
GitHub - XayahSuSu/Android-DataBackup: 数据备份 DataBackup for Android - https://github.com/XayahSuSuSu/Android-DataBackup
Reminder : to install it via F-Droid first add the Izzy repository to F-Droid ( settings - repositories/sources)
IzzyOnDroid F-Droid Repository -
https://apt.izzysoft.de/fdroid/
#Backup #Android
Rclone Remount
Remount cloud storage locally during boot via rclone & fusermount directly on your Android powered smart device.
Virtually limitless storage expansion with support for dozens of cloud providers including Dropbox, GDrive, OneDrive, SFTP & many more. Extremely useful for devices without physical storage expansion capabilities. Also great for streaming large media files without need for full caching. Binaries compiled using Termux.
Features:
Support for arm, arm64, & x86
Huge list of supported cloud storage providers
Apps with ability to specify paths can access /mnt/cloud/
Most file explorers work just fine (issue #9)
Mount points use names of remote(s) in rclone.conf
Specify custom rclone params for each remote via /sdcard/.rclone/.REMOTE.param
Access remotes via http://127.0.0.1:38762
Access remotes via ftp://127.0.0.1:38763
Mount bind to /sdcard/ (see issue #5)
Support for Work Profiles
https://github.com/Magisk-Modules-Repo/com.piyushgarg.rclone
#rclone#remount#cloud#alternatives
RCX
Android GUI for rclone. Manage files across many cloud services in a simple way under one interface.
https://x0b.github.io
https://f-droid.org/packages/io.github.x0b.rcx
https://github.com/x0b/rcx
@nogoolag
#rcx#rclone#cloud#alternatives