gpt4 book ai didi

Python 多处理 - TypeError : 'Nonetype' object not callable

转载 作者:行者123 更新时间:2023-12-03 17:18:22 24 4
gpt4 key购买 nike

我在使用 PySQLPool 时遇到了 Python 多处理库的问题。这导致我收到以下异常:'TypeError: 'NoneType' object is not callable' .

我使用多处理创建了一个池,然后调用 Pool.map在一个虚拟函数上。在 map 的参数中我包括一个来自 PySQLPool 的连接。我已经包含了我可以用下面的代码重现错误的最少代码:

from config import *
import PySQLPool
import multiprocessing as mp
def a(b):
return b
PySQLPool.getNewPool().maxActiveConnections = 5
connection = PySQLPool.getNewConnection(user=USER,
passwd=PASSWORD,
host='localhost',
db=DATABASE,
use_unicode=True,
charset='utf8',
commitOnEnd=False)
pool = mp.Pool(processes=8)
args = [(connection)]
result_list = pool.map(a, args, 8)
pool.close()
pool.join()

它导致以下错误:
Exception in thread Thread-2:
Traceback (most recent call last):
File "/root/.pyenv/versions/2.7.6/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/root/.pyenv/versions/2.7.6/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/root/.pyenv/versions/2.7.6/lib/python2.7/multiprocessing/pool.py", line 342, in _handle_tasks
put(task)
TypeError: 'NoneType' object is not callable

我用 pip 安装了以下内容
(venv)root@Ubuntu-1204-precise-64-minimal:/usr/share/python-multiproc/src# pip list
MySQL-python (1.2.5)
pip (6.0.8)
PySQLPool (0.3.8)
setuptools (12.0.5)

我已经在 Ubuntu 12.04 和 Python 版本 2.7.3、2.7.6 和 2.7.9 上对其进行了测试。还在使用 Python 2.7.9 的 Windows 8 上进行了测试。
此外,我已经尝试过 PySQLPool 0.3.8 和 0.4。

这是什么原因,我该如何调试?

最佳答案

这个模糊的错误可能来自传递给被调用函数的参数损坏。由于酸洗/取消酸洗逻辑,复杂对象可能会发生这种情况。
如果可能,请尝试重新编写代码以将绝对最小数量的 args 传递给您的函数。这可能意味着在每个进程内重新创建一些对象。

关于Python 多处理 - TypeError : 'Nonetype' object not callable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28961645/

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