gpt4 book ai didi

python - 调试时在 pool.close() 上抛出异常,但在运行时不会

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:42 26 4
gpt4 key购买 nike

我不认为我在 Python 2.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 中),否则运行成功。这是(可能)堆栈跟踪中最相关的部分:

Error in atexit._run_exitfuncs: Traceback (most recent call last):
File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/util.py", line 322, in _exit_function p.join() File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py", line 138, in join assert self._parent_pid == os.getpid(), 'can only join a child process'
AssertionError: can only join a child process

最佳答案

您使用哪个 PyCharm 版本?这似乎已在 2019.1.2 中由 https://youtrack.jetbrains.com/issue/PY-34436 修复

关于python - 调试时在 pool.close() 上抛出异常,但在运行时不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55929554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com