gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:32:41 24 4
gpt4 key购买 nike

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

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