小编Pus*_*kar的帖子

如何使用检查检查 python 函数参数的默认值是否设置?

我正在尝试识别未设置默认值的函数的参数。我正在使用inspect.signature(func).parameters.value()提供函数参数列表的函数。由于我使用的是 PyCharm,因此我可以看到未设置默认值的参数的属性设置Parameter.defaultinspect._empty. 我通过以下方式声明该函数:

def f(a, b=1):
    pass
Run Code Online (Sandbox Code Playgroud)

因此, 的默认a值为inspect._empty。由于inspect._empty是 一个私有属性,我认为可能有一种方法可以检查值是否为inspect._empty,但我找不到它。

python signature inspect

7
推荐指数
1
解决办法
3772
查看次数

无法理解 Future.set_result 在另一个线程中的期货行为

我想要一个类函数暂停执行,直到另一个线程根据函数的请求更改类变量的值。我是 python asyncio 模块的新手。

asyncio.Future 似乎提供了一种等待未来价值的机制,因此我尝试了一个玩具示例:

class RandomReader:
    def __init__(self):
        self.loop = asyncio.get_event_loop()
        self.service = 3
        self.thread = threading.Thread(target=self.reader)
        self.thread.start()
        self.futures: Dict[int, asyncio.Future] = {}

    def reader(self):
        asyncio.set_event_loop(self.loop)
        while self.service != 0:
            k, v = read()
            if k in self.futures:
                if self.futures[k].done():
                    continue

                self.futures[k].set_result(v)
                self.service -= 1

    async def wait(self, v: int):
        self.futures[v] = self.loop.create_future()
        a = await self.futures[v]
        logging.debug("value %d received %f", v, a)
        return v, a
Run Code Online (Sandbox Code Playgroud)

read上面的函数读取可能与wait.

调用函数使调用如下 3 次 ( RandomReader.service)

    t1 = …
Run Code Online (Sandbox Code Playgroud)

python python-asyncio

3
推荐指数
1
解决办法
424
查看次数

标签 统计

python ×2

inspect ×1

python-asyncio ×1

signature ×1