У меня есть следующий скрипт, который работает по большей части Ссылка на PasteBin Работа скрипта заключается в запуске ряда потоков, каждый из которых, в свою очередь, запускает подпроцесс с помощью Popen.Выходные данные каждого подпроцесса выглядят следующим образом:
1
2
3
.
.
.
n
Done
По сути подпроцесс переносит 10M записей из таблиц в одной базе данных в разные таблицы в другой БД с большим количеством массива данных / манипуляций между ними из-за различныхсхемы.Если в любой момент выполнения подпроцесса происходит сбой (неверные записи, дубликаты первичных ключей и т. Д.) Или он успешно завершается, он выдаст «Done \ n».Если больше нет записей для выбора для передачи, он выдаст «NO DATA \ n»
Моим намерением было создать мой скрипт «tableTransfer.py», который бы породил ряд этих процессов, прочитайте ихвывод и, в свою очередь, вывод информации, такой как количество выполненных обновлений, оставшееся время, прошедшее время и количество передач в секунду.
Я начал запускать процесс вчера вечером и проверил сегодня утром, чтобы убедиться, что он заблокирован,Подпроцессов не было, все еще есть записи, которые нужно обновить, и сценарий не завершился.Он просто сидел там, больше не выводил текущую информацию, потому что не выполнялись никакие подпроцессы для обновления полного числа, что контролирует обновления выходных данных.Это работает на OS X.
Я ищу три вещи:
- Я хотел бы избавиться от возможности возникновения этого тупика, поэтому мне не нужно проверятьна это так часто.Есть ли проблема с блокировкой?
- Я делаю это неправильно (переменная gThreading для управления циклом создания дополнительного потока ... и т. Д.) Буду признателен за некоторые предложения по улучшению моей общей методологии.
- Как мне справиться с выходом ctrl-c?Прямо сейчас мне нужно убить процесс, но предположить, что я смогу использовать сигнальный модуль или другой для перехвата сигнала и уничтожения потоков, верно?
Я не уверен,Я должен вставить весь мой сценарий здесь, так как я обычно просто вставляю фрагменты.Дайте мне знать, если я тоже вставлю это сюда.