Python 调试时在pool.close()上引发异常,但在运行时没有引发异常

Python 调试时在pool.close()上引发异常,但在运行时没有引发异常,python,pycharm,python-multiprocessing,Python,Pycharm,Python Multiprocessing,我认为在Python2.7中处理这个问题时没有遇到这个问题,但是在3.7中调试时,Python在调用pool.close()时抛出了一个异常。这是功能的相关部分: pool = multiprocessing.Pool(6) iterator = pool.imap_unordered(worker_func, worker_input) while True: try: t0, t1 = next(iterator) except multiprocessin

我认为在Python2.7中处理这个问题时没有遇到这个问题,但是在3.7中调试时,Python在调用
pool.close()
时抛出了一个异常。这是功能的相关部分:

pool = multiprocessing.Pool(6)
iterator = pool.imap_unordered(worker_func, worker_input)

while True:
    try:
        t0, t1 = next(iterator)
    except multiprocessing.TimeoutError:
        continue
    except StopIteration:
        break
    else:
        dbinserts1(t0)
        dbinserts2(t1)            

pool.close()
pool.join()
2to3
所做的唯一更改是将
iterator.next()重写为
next(iterator)
。该函数仅在调试时失败(在PyCharm中),否则将成功运行。这可能是堆栈跟踪中最相关的部分:

atexit中出错。\u运行\u退出功能:回溯(最近一次调用最后一次):
文件 “/usr/local/ceral/python/3.7.3/Frameworks/python.framework/Versions/3.7/lib/python3.7/multiprocessing/util.py”, 第322行,输入退出功能 p、 join()文件“/usr/local/ceral/python/3.7.3/Frameworks/python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py”, 第138行,加入 断言self.\u parent\u pid==os.getpid(),“只能加入子进程”
AssertionError:只能加入子进程


你用的是哪一个版本?2019.1.2版中,您使用的PyCharm版本似乎已经解决了这一问题?这似乎在2019.1.2中通过

您是如何调试的?您正在使用python调试器吗?(pdb)@dm03514对不起,我给它贴上了PyCharm标签,但在问题中没有具体说明。已更新。您如何调试?您正在使用python调试器吗?(pdb)@dm03514对不起,我给它贴上了PyCharm标签,但在问题中没有具体说明。更新。是的,这是几个小时前发布的,但它修复了它!是的,这是几个小时前发布的,但它修复了它!