Ограничить во времени работу с API Компас 3D.

Автор Student2025, 07.06.26, 10:56:15

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Student2025

Добрый день.

Так получилось что технически нужно ограничить работу потока например в 5 мин и завершить ее так что бы не упал Компас 3Д. Это вообще возможно?

Поток работает с WinAPI, затем ряд работ в том числе с API Компас 3D. Может так произойти что 5 мин истекли а объект Компаса ждет например результата работы API функции, а тут ее закилил и он может упасть. По идее мне надо как то передать этому объекту что ожидать уже нет смысла и прекратить его работу но при этом не завершая процесс Компас 3Д.

Раньше делал специальные трюки через python::multiprocessing. Рассмотрю решения на других языках программирования.

p3452

Компас (пока) однопоточен...
Но Ваши "задачи" в "потоке" - дискретны...
Можете и дальше "насиловать" поток, а можете переключится на ослеживание завершения конкретной задачи.
 

Student2025

#2
Цитата: p3452 от 07.06.26, 11:25:40Компас (пока) однопоточен...
Но Ваши "задачи" в "потоке" - дискретны...
Можете и дальше "насиловать" поток, а можете переключится на ослеживание завершения конкретной задачи.

1) Не знаю даже близко что будет выполняться в момент завершения таймера. Там функция например может отработать 10 сек а может и все 60 сек.
2) Функции - высокоуровневые, и так просто их не "расщепить".
3) Есть ряд слабоапробированных функций - они вообще могут увести в бесконечность по ряду причин.


Есть один САПР прожорливый в ресурсах у него по мимо основного API0 есть еще API1 в виде отдельной консоли - запускаешь передаешь команду - критические настройки или организацию работы и САПР во время работы - реконфигурируется.

Student2025

Накопал пару трюков - попробую отпишусь.

Gruden

Цитата: p3452 от 07.06.26, 11:25:40Компас (пока) однопоточен...
Но Ваши "задачи" в "потоке" - дискретны...
Можете и дальше "насиловать" поток, а можете переключится на ослеживание завершения конкретной задачи.
100% - не прав.
+ Благодарностей: 1

p3452


Student2025

#6
Цитата: p3452 от 07.06.26, 14:44:57Обоснуйте!
Прикрепил пример в 1 сообщении - посмотрите, и поймете что так просто поток не закрыть, а что уж там говорить о восстановлении..

В python только multiprocessing может "закилить" поток - но и тут все далеко не просто особенно если речь идет о работе со сторонним приложением через его api. Падение приложения - гарантировано!

Student2025

p3452, вижу посмотрели ? поняли что не так все просто оказалось ?

p3452

Цитата: Student2025 от 07.06.26, 17:40:41поняли что не так все просто оказалось ?
Мне непонятна Ваша "головная боль"...

Student2025

Цитата: p3452 от 07.06.26, 19:19:46Мне непонятна Ваша "головная боль"...

Вы приведите примерчик, а там видно будет насколько знаете вопрос.

А ту получится так что и не знаете.

ЗЫ если что то пример что я привел - примитивный и он с api например Компаса 3Д даже близко работать не будет..

p3452

Student2025, что бы "привести примерчик" нужно понять Вашу цель!

Так как цель, не ясна, общие рассуждения, для снятия "головной боли":
1 - функция возвращает значение, по этому значению можно судить о "работе" функции,
2 - если боитесь, что функция зациклится - оборачивайте содержимое функции в счетчик итераций, или - счетчик времени и далее см. п1.

Student2025

#11
Ну вот простой пример - есть одна неделимая функция высокого уровня api программы: 1) эта функция может работать 20 сек а может и минут 5. Почему так? Да потому что зависит от куч параметров, бывает даже когда с диском на котором установлена программа занят на полную с другим приложением, или сеть слабая и элементы не прогружены, или ряд других задач - вызывают замедление. На эту функцию у меня есть 1 минута и все дальше она бессмысленна. Получается 1 минута может растянутся на 5 минут! Ну ок если это единичный случай а что делать если он висит на пуле потоков ? 100 потоков порождают 500 минут времени за место выделенных 100 минут ? Нету не какой дискретности.

Потом когда задача найдет альтернативные пути решений что очень не простыми будут, уже что то продумывать, а до этого еще дожить нужно!

p3452, по вашей логике мне нужно разобрать орган реализации этой функции в программе и написать под него функцию менеджер который будет принимать флаг ну времени и завершать прогресс работы той функции ?

p3452

Мне не понятен Ваш "кавардак", начнем с простого:
- Вы работаете под управлением Компас или у Вас свой исполняемый файл (exe)?

Student2025

Цитата: p3452 от 07.06.26, 22:25:57- Вы работаете под управлением Компас или у Вас свой исполняемый файл (exe)?
У меня пишется код на Python это можно было понять из 1 сообщения.  Который и управляет всем оркестром.

p3452

Цитата: Student2025 от 07.06.26, 22:31:09Который и управляет всем оркестром.
- Ну, и..?
- Как ПЫТАЕТЕСЬ выполнять функции API - стандартно, или ПЫТАЕТЕСЬ параллелить?

Student2025

Цитата: p3452 от 07.06.26, 22:42:13- Ну, и..?
- Как ПЫТАЕТЕСЬ выполнять функции API - стандартно, или ПЫТАЕТЕСЬ параллелить?


Парралелить одним экземпляром Компаса и ряд других программ. Например запустил 10 копий Компаса и не закрывая их идет работа с ними. На перезапуск например Компаса может уйти 5 минут времени а есть другие приложения которым и 10 минут мало.

Student2025

#16
Например: создаются 10 экземпляров программ (в том числе и Компас 3Д) и создаются 10 первых потоков которые выполняют задачи и этим потокам выделено всего по 5 минут работы, эти потоки создают флаги занятости приложений как только в очереди освобождаются приложение то создается следующий поток и так далее. Потоков могут быть много.

p3452, пришли к изначальной постановке задачи (1 сообщение) ?

p3452

Судя по Вашим ответам - "фигней вы маетесь"...
(А я то серьезно пытался понять откуда у Вас взялась эта проблема с таймингом функций)

Student2025

Цитата: p3452 от 08.06.26, 11:10:56(А я то серьезно пытался понять откуда у Вас взялась эта проблема с таймингом функций)

Ну вот такие условия..

Цитата: p3452 от 08.06.26, 11:10:56Судя по Вашим ответам - "фигней вы маетесь"...
Я так понял - не знаете, а ту вот туда то сюда надо, а оказалось вон оно как - "одна болтовня".



Starik

+ Благодарностей: 2