Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Открыть новую тему     Написать ответ в эту тему

Adm10



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здесь обсуждается всё, что связано с использованием Python: программирование, библиотеки, ресурсы и другие вопросы

Python


Python - высокоуровневый язык программирования общего назначения с динамической типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ

С чего начать?
Простой, понятный и вместе с тем грамотный ресурс на русском языке: pythonworld.ru + самоучитель
Библия PEP8

Всего записей: 35 | Зарегистр. 13-10-2006 | Отправлено: 15:48 16-06-2007 | Исправлено: shrmn, 22:22 07-03-2021
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не знаю в какой теме спросить: здесь или по win 10. Ситуация - есть скрипт, нормально работавший в Win 7. Сейчас поставил Win 10 x64 и выдало ошибку  

Цитата:
Traceback (most recent call last):
  File "D:\Programs\Shared\Scripts\python\misc\replace_files_on_symbolic_link.py3", line 106, in <module>
    EntryPoint().run()
  File "D:\Programs\Shared\Scripts\python\misc\replace_files_on_symbolic_link.py3", line 90, in run
    utils.create_symlink(dest_file, src_file, debug=True)
  File "D:\Programs\Shared\Scripts\python\libs\utils.py", line 687, in create_symlink
    os.symlink(os.path.relpath(src, start=dst_dir), dst)
OSError: [WinError 1314] Клиент не обладает требуемыми правами: '..\\Все\\Android приложения в Windows 11 с помощью WSA (Подсистема Windows для Android) — как установить.mp4' -> 'Android\\Android приложения в Windows 11 с помощью WSA (Подсистема Windows для Android) — как установить.mp4

Т.е. ошибка, что нет прав на выполнение os.symlink.
Права на обе папки нормальные - есть и админы с полными правами (мой юзер в группе админов).
UAC выставлен на минимальный порог.
Данный скрипт сработал, когда запустил консоль как администратор. Можно это как-то решить без постоянного запуска под этим суперадмином, как в Win 7 было? И нашиша вообще для создания симлинков нужны такие права?

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 16:15 14-05-2023 | Исправлено: unreal666, 20:58 14-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
Разберитесь с тем, какой питон срабатывает. Здесь упоминается WSA, то есть питон в Андроид подсистеме. Не думаю, что аналогичная использовалась в W7, ее не было (как и WSL)

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 19:33 14-05-2023 | Исправлено: Mavrikii, 19:33 14-05-2023
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Запускается обычный python 3.8 x32.
У меня стоит 3 версии - 2.7, 3.8 и 3.11.
Для .py и .py3-файлов  - 3.8 (3.11 пока не используется, принудительно для py-файлов поставил 3.8 в файле py.ini), для .py2-файлов - 2.7.15.
 
Юзаю 3.8, а не 3.11, т.к. 3.8 перенесен с win 7 со всеми модулями (точнее не перенесен, а просто почти все проги у меня стоят на отдельном разделе и при установке новой винды на новый диск просто клонировал тот раздел), а на 3.11 пока нет времени ставить модули, т.к. их дофига.

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 20:57 14-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
Запускается, как и сказал не тот  нтерпретатор. Не в смысле номера версии, а из эмулятора в Windows.
Проверьте, что нужный вам в path или явно укажите путь к нему при запуске скрипта.

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 21:13 14-05-2023
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
если бы запускался из эмулятора, то он просто бы не запустился, т.к.:
1. У меня используется сторонние модули, а в эмуляторе они наврядли есть
2. Запускается файл с расширением py3, который в реестре назначен именно на нужный интерпретатор
 
И в проге Process Hacker явно вижу, что запущен нужный (добавил в файл time.sleep(30), чтобы успеть посмотреть).

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 22:05 14-05-2023 | Исправлено: unreal666, 22:06 14-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
OSError: [WinError 1314] Клиент не обладает требуемыми правами: '..\\Все\\Android приложения в Windows 11 с помощью WSA (Подсистема Windows для Android) — как установить.mp4' -> 'Android\\Android приложения в Windows 11 с помощью WSA (Подсистема Windows для Android) — как установить.mp4

хотя, это только путь и название файла, а не сама WSA.
путь в полный какой преобразуется?
 
https://learn.microsoft.com/ru-ru/windows/security/threat-protection/security-policy-settings/create-symbolic-links

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 23:08 14-05-2023
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
папка "Все" и "Android" расположена в папке "L:\Видео\Видеоинфа\Электротехника и IT\@ remontka.pro".

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 13:43 15-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
значит смотреть какие права там, что еще можно тут сказать?
явно говорит (система), что у того, под кем запущено, нет прав на создание симлинка.
ссылка выше о том, как работает в W10 и 11

Цитата:
Уязвимость
Пользователи, имеющие право пользователя Создать символьные ссылки , могут непреднамеренно или злонамеренно подвергать вашу систему атакам с символическими ссылками. Атаки с символическими ссылками можно использовать для изменения разрешений на файл, повреждения данных, уничтожения данных или в качестве DoS-атаки.
 
Противодействие
Не назначайте пользователю право создать символьные ссылки для обычных пользователей. Ограничьте это право доверенными администраторами. С помощью команды fsutil можно установить параметр файловой системы символических ссылок, который управляет типом символьных ссылок, которые можно создать на компьютере.

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 23:03 15-05-2023
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужен совет:
Пытаюсь написать скрипт для работы со сложным текстовым документом, который для начала нужно поместить в объект, состоящий примерно из 1.200.000 элементов, каждый из которых имеет до десяти свойств. Текст не изменяется. Поэтому выглядит разумным не создавать этот объект каждый раз, а произвести сериализацию и загружать его из файла. Пробовал использовать pickle, json и некоторые другие инструменты, однако, чтение занимает несколько секунд. Размер дампа - ок. 50 мб. Текстовый файл такого размера считывается гораздо быстрее. Есть ли способ ускорить этот процесс?
ЗарСпасБол!

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 22:53 18-05-2023 | Исправлено: Vadim39, 22:59 18-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vadim39

Цитата:
Текстовый файл такого размера считывается гораздо быстрее

потому что тупо считывается, но нужно же еще распарсить.
попробуйте https://jcristharif.com/quickle/

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 22:58 18-05-2023
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо!
А экземпляры классов он умеет?

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 23:01 18-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vadim39

Цитата:
А экземпляры классов он умеет?


Цитата:
Quickle can serialize most builtin types, but unlike pickle, it can’t serialize arbitrary user classes. This is due to security concerns - deserializing arbitrary python objects requires executing arbitrary python code.  

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 23:06 18-05-2023
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо!
Попробовал. Чтение не ускорилось, только запись
(Тестировал на фрагменте, содержащем примерно 10% от нужной инфы).
pickle write 0.184 сек.
pickle read 0.345 сек.
quickle write 0.057 сек.
quickle read 0.346 сек.
 
Получается, что нет способа быстро загрузить с диска список из миллиона таких вот экземпляров?
[str1, str2, prm1, ..., prm10]
 

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 03:48 19-05-2023 | Исправлено: Vadim39, 04:02 19-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vadim39

Цитата:
Получается, что нет способа быстро загрузить с диска список из миллиона таких вот экземпляров?

проблема то не в чтении, проблема в обработке после. быстрее, возможно, если сохраняются данные фиксированного формата. когда можно блоками выцеплять.
0.3 секунды - мешает? значит у вас изначально идея не очень. попробуйте использовать базу данных или redis, к примеру.
если речь об hdd, а не ssd, то могут быть задержки и тут.

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 04:38 19-05-2023 | Исправлено: Mavrikii, 04:39 19-05-2023
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
0.3 секунды - мешает?

Это, как было сказано, 10% от нужного размера. Сделал так, чтобы быстрее тестировать. Насчет блоков - очень интересно. Если выделить, скажем, по 8 байт на каждый элемент, должно хватить. А как реализовать "выцепление" этих блоков?

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 05:42 19-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vadim39

Цитата:
 А как реализовать "выцепление" этих блоков?

считываете, выбираете нужный кусок, назначаете чему нужно. нет необходимости прохода по данным, чтобы отпарсить.  
можно в бинарном виде через struct pack и unpack

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 07:35 19-05-2023 | Исправлено: Mavrikii, 07:38 19-05-2023
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Огромное спасибо! Ваш совет очень помог.
Лист из миллиона таких списков  
['str1', 'str2',1043728, 23478, 18, 0, 1, 26,True, False]
создается из файла за треть секунды. Код чтения написан верно?
with open(fn_tmp, 'rb') as f:
    while chunk:=f.read(34):
        arr1.append(struct.unpack('4s4s6i2b', chunk))

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 18:17 19-05-2023
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Боюсь, рано порадовался: необходимость decode() для строк сводит на нет весь выигрыш в скорости

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 06:37 21-05-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vadim39

Цитата:
для строк сводит на нет весь выигрыш в скорост

ну посмотрите
https://github.com/msgpack/msgpack-python
unpackb(packb('foo', use_bin_type=True), encoding='utf-8')

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 07:00 21-05-2023
Yvaliko

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Это, как было сказано, 10% от нужного размера.

Мне даже интересно стало, что это за скрипт такой. Что 3 секунды для него недопустимо долго.
 
Если хочется обойтись без декода, то есть вот такая волшебная команда:

Код:
eval("['str1', 'str2',1043728, 23478, 18, 0, 1, 26,True, False]")

Не скажу, что самая быстрая, но питон ведь и не про скорость.
Еще есть вариант использовать серилизацию в dataclass Вроде как должно быть быстрее.
Как ультимативный вариант - использовать сторонние интерпретаторы. Например https://www.pypy.org/

Всего записей: 770 | Зарегистр. 13-05-2008 | Отправлено: 20:02 22-05-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru