我有一个运行时间很长的 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,但是在阅读了一些内容之后,我发现这种严重的事情与我在这里线程化并且线程试图访问另一个线程破坏的东西有关?