可能的內(nèi)存泄露導(dǎo)致程序退出時(shí)直接刪除內(nèi)存共享塊:
resource_tracker.py:216: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown warnings.warn('resource_tracker: There appear to be %d ')
解決辦法幽崩,不能直接使用close()函數(shù),正確退出方法:
from multiprocessing import resource_tracker
if shm_a is not None:
shm_a.close()
resource_tracker.unregister(shm_a._name, "shared_memory")
手動(dòng)關(guān)閉或者異常退出時(shí)上述問題依然存在,通過檢測(cè)退出信號(hào)可以解決:
def handler(signal, frame):
if shm_a is not None:
shm_a.close()
resource_tracker.unregister(shm_a._name, "shared_memory")
# 注冊(cè)信號(hào)處理事件
signal.signal(signal.SIGINT, handler)