我正在尝试识别未设置默认值的函数的参数。我正在使用inspect.signature(func).parameters.value()提供函数参数列表的函数。由于我使用的是 PyCharm,因此我可以看到未设置默认值的参数的属性设置Parameter.default为inspect._empty. 我通过以下方式声明该函数:
def f(a, b=1):
pass
Run Code Online (Sandbox Code Playgroud)
因此, 的默认a值为inspect._empty。由于inspect._empty是 一个私有属性,我认为可能有一种方法可以检查值是否为inspect._empty,但我找不到它。
我想要一个类函数暂停执行,直到另一个线程根据函数的请求更改类变量的值。我是 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)