我有一个 python 函数,它将 multiprocessing.Lock 对象作为输入,并在其上使用获取和释放函数。使用 mypy 对其进行评估会返回错误 Function multiprocessing.Lock"is not valid as a type
。如何正确注释此函数?
最佳答案
Lock
实际上是一个返回 _LockType
的普通函数,它被定义为 _LockType = synchronize.Lock
,所以你可以这样做:
from multiprocessing.synchronize import Lock as LockBase
def func(lock: LockBase):
pass
尽管如此,他们将 _LockType
作为模块私有(private)这一事实表明他们将其视为 future 可能会更改的实现细节,因此请小心。
上面还有这个注释 block ,其中定义了 _LockType
:
# The following type aliases can be used to annotate the return values of
# the corresponding functions. They are not defined at runtime.
#
# from multiprocessing import Lock
# from typing import TYPE_CHECKING
# if TYPE_CHECKING:
# from multiprocessing import _LockType
# lock: _LockType = Lock()
. . .
_LockType = synchronize.Lock
关于python - 在 mypy 中使用 python multiprocessing.Lock 作为参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70424427/