Форум сайта python.su
OlezhkaДля запрета копий программы обычно делают так: программа создаёт свой файл в директории и записывает туда номер своего процесса; когда запускается вторая копия программы, она проверяет, есть ли этот файл в этой директории и не запускается, если он есть; а когда программа завершает работу, она удаляет этот свой файл. Это самое простое, что можно реализовать. Не надо проверять никакие процессы.
Батник запускает интерпретатор, состоящий из двух процессов - “py.exe” и “python.exe”. Вопрос - а как мне теперь запретить запуск копий программы (мне надо!)
Офлайн
py.user.nextДа, спасибо за совет! Я такой совет уже нагугливал! Но там в комментах этому советчику ответили, что у данного способа есть весомый недостаток. Если программа не завершит нормально свою работу (сбой, скачок напряжения, внештатное выключение всей системы), этот файл никто не удалит. Он там так и останется лежать. И после этого программа не запустится вообще.
Для запрета копий программы обычно делают так: программа создаёт свой файл в директории и записывает туда номер своего процесса; когда запускается вторая копия программы, она проверяет, есть ли этот файл в этой директории и не запускается, если он есть; а когда программа завершает работу, она удаляет этот свой файл. Это самое простое, что можно реализовать. Не надо проверять никакие процессы.
Отредактировано Olezhka (Дек. 14, 2022 06:37:24)
Офлайн
OlezhkaНа блоке питания, там пока по проводам дойдет это все до процессора, получается долго. Тема из разряда - умный не спросит, дурак не поймет. Ключевое слово у тебя - выполняется виртуальная машина - это по теме твоей что питон медленный.И в exe по всей видимости pyinstaller запихивает эту машину, чтобы разернуть на другом пк, где нет установленного python.exe от того и размер большой. А для антивирусников такой exe - сатанинское отродие, потому что виртуальной машине нужно как-то понять как преобразовать свой байт-код, в байт-код процессора, а для этого нужно залезть в системные папочки.
А виртуальная машина не на процессоре чтоль выполняется? На USB-контроллере чтоль выполняется? Или на южном мосте?
Офлайн
OlezhkaЕсли в файле записать номер процесса, который его и создаёт, то этот номер процесса и работающие процессы можно сравнить. При работающем процессе python.exe в файле будет записан номер этого процесса. Совпадение нового процесса со старым процессом, который и создал этот файл, имеет очень маленькую вероятность. Если файл создал процесс с именем python.exe с номером 12345, то после сбоя этого процесса не будет. Если будет python.exe, то он будет с другим номером.
Но там в комментах этому советчику ответили, что у данного способа есть весомый недостаток. Если программа не завершит нормально свою работу (сбой, скачок напряжения, внештатное выключение всей системы), этот файл никто не удалит.
OlezhkaПо вопросам на форуме знаком. Проблем с ней, с nuitka, немало обычно.
P.S. Ты мне, пожалуйста, расскажи про “Nutika”. Ты с ней знаком?
Отредактировано py.user.next (Дек. 14, 2022 08:56:14)
Офлайн
xam1816Нихрена подобного! Нет, может, конечно, у меня две пары ног, но я когда скомпилировал пробный “екзешник” “pyinstaller”ом и попытался, как ты выражаешься, развернуть этот “экзешник” на своем другом ПК, на котором ВООБЩЕ не установлен “Питон”, при запуске экзешника тут же вылезло окошко с ошибкой, что не найдены внешние модули, используемые в программе. Как только “Питон” на вторую машину установил, ошибка пропала.
И в exe по всей видимости pyinstaller запихивает эту машину, чтобы развернуть на другом пк, где нет установленного python.exe
Отредактировано Olezhka (Дек. 14, 2022 17:21:54)
Офлайн
py.user.nextКак это не надо?! Либо я до конца не понял, либо… Вот смотри! Рисую схему!
Не надо проверять никакие процессы
Отредактировано Olezhka (Дек. 14, 2022 17:50:20)
Офлайн
OlezhkaЕсли тебе не нужна устойчивость к падениям системы, то тебе не нужно анализировать процессы. Достаточно только файл проверить на наличие и создать при запуске и удалить при завершении и всё.
Я правильно логику понял? Если да, то как же ты тогда говоришь, что “Не надо проверять никакие процессы”?
Отредактировано py.user.next (Дек. 14, 2022 22:02:56)
Офлайн
py.user.nextСпасибо.
Офлайн