Python如何调试SIGBUS / SIGILL错误?

时间:2019-04-19 17:27:51

标签: python multithreading multiprocessing sigbus

我有一个运行时间很长的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,但是经过阅读后,我发现这种严重的现象与我在这里线程化并且线程正在尝试访问另一个线程破坏的东西有关。

感谢您的帮助。

欢呼

0 个答案:

没有答案