python - 在 mypy 中使用 python multiprocessing.Lock 作为参数类型

标签 python multiprocessing type-hinting mypy

我有一个 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/

相关文章:

python - 上传后 Flask 重定向不起作用

python - (任何)python 模块的类型提示是什么?

python - 为什么我没有针对错误输入的类属性的警告?

python - 检查对象是否为 typing.Generic 的正确方法是什么?

python - Pandas 按月计算计数

python - Python 中的 Unicode 字符串语法

python - pip install regex 无法在 Anaconda python3.6.9 virtualenv 上构建

python - 加入多处理超时

c - 为什么这段代码不能线性扩展?

python - Python如何在多个进程之间共享内存?