耗时许久,终于在不断理解和试错中解决了此Bug!!
原代码是这样的:
def setup_generator(processes=None, batch_size=10, cg=None):
def init_worker():
signal.signal(signal.SIGINT, signal.SIG_IGN)
global pool
try:
pool.terminate()
except:
pass
此时会出现multiprocessing.Pool()传来的类似于can’t pickle的报错。
于是我按照参考文献的思路,将引起错误的函数以及相关变量提到了外面,如下面的代码所示:
# 提到外面的 worker 函数
def init_worker():
signal.signal(signal.SIGINT, signal.SIG_IGN)
# 在外面定义 pool 变量
global pool
pool = None
def setup_generator(processes=None, batch_size=10, cg=None):
global pool
try:
pool.terminate()
except:
pass
然后就很神奇地Debug了。
供大家参考,祝大家少遇Bug!