Bro*_*eph 6 type-hinting pycharm python-3.6 mypy
我正在Python 3.6中编写一个分形生成器,并使用multiprocessing.Queues将消息从主线程传递给工作程序。到目前为止,这是我尝试过的方法,但是PyCharm似乎无法推断出从队列中获取的项目的属性类型:
from typing import NamedTuple, Any, Generic, TypeVar, Tuple
from multiprocessing import Process, Queue
T = TypeVar()
class Message(NamedTuple):
method: str
id: str
data: Any = None
class TypedQueue(Generic[T]):
def get(self) -> T:
...
def put(self, m: T) -> None:
...
MessageQ = TypedQueue[Message]
class FractalWorker(Process):
def __init__(self, work: MessageQ, results: MessageQ)
super().__init__()
self.work = work
self.results = results
@staticmethod
def make_queues() -> Tuple[MessageQ, MessageQ]:
work = cast(MessageQ, Queue())
results = cast(MessageQ, Queue())
return work, results
Run Code Online (Sandbox Code Playgroud)
我希望PyCharm能够告知结果的属性self.work.get具有Message该类指定的类型。我也想知道是否有类似的标准类型提示队列方法。
小智 23
老问题,但我刚刚发现
P: "Queue[Path]" = Queue()
Run Code Online (Sandbox Code Playgroud)
在 PyCharm 中同时使用queue.Queue和multiprocessing.Queue使用