Python как отладить ошибку SIGBUS / SIGILL? - PullRequest
0 голосов
/ 19 апреля 2019

У меня очень долго работает скрипт Python, который синхронизирует данные в разных системах. Он выполняет много операций по извлечению данных, преобразованию данных, HTTP-запросам и тому подобному, частично многопоточному.

Скрипт иногда выдает ошибки SIGBUS / SIGILL, и я понятия не имею, как их правильно обрабатывать.

Программа работает примерно с 500 элементами в многопоточном режиме. Каждый элемент представляет собой словарь, подобный этому.

def processing(item):
    reduced_df = item['streets']
    reduced_df = reduced_df[reduced_df['city'] == item['city_country']['city']].copy()
    do stuff with reduced_df

preped_streets # this is the main_data_frame

items = [{
    'city_country': comb,
    'language': language,
    'streets': preped_streets
} for comb in city_country_combinations for language in ['en','de',...]]

with pool.ThreadPool(processes=32) as pool:
   pool.map(processing, items)

Теперь я никогда раньше не сталкивался с SIGBUS или SIGILL, но после некоторого чтения я понял, что это серьезное отношение связано с тем, что я здесь использую потоки, а потоки пытаются получить доступ к чему-то, что уничтожено другим потоком?

Любая помощь приветствуется.

Приветствия

...