У меня очень долго работает скрипт 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, но после некоторого чтения я понял, что это серьезное отношение связано с тем, что я здесь использую потоки, а потоки пытаются получить доступ к чему-то, что уничтожено другим потоком?
Любая помощь приветствуется.
Приветствия