Forwarded from Hung-I Wang
不用 Semaphore 这样的 synchronization primitives 没法写。
依云
我之前是这么干的: async def main(proto): q = asyncio.Queue() ret_q = asyncio.Queue() futures = [worker(q, ret_q) for _ in range(40)] producer_fu = asyncio.ensure_future(producer(q, proto)) printer_fu = asyncio.ensure_future(printer(ret_q)) await as…
import asyncio
from asyncio import ensure_future
async def main(proto, n_parallelism = 40):
q_arg = asyncio.Queue()
q_res = asyncio.Queue()
futures = [worker(q_arg, q_res) for _ in range(n_parallelism)]
producer = ensure_future(producer(q_arg, proto))
consumer = ensure_future(consumer(q_res))
await asyncio.wait(futures)
consumer.cancel() #🤔
await producer
await consumer (刚才还在想
q_arg 和 q_res 哪来的联系,发现自己记漏了 worker(q_arg, q_res)Forwarded from 天天向上 (Basic I/O Interface)
The latest version of CMake (3.17.1) was released.
Forwarded from Mivik Q
最近用新的思路写个基于状态的lexer,但是想到一个问题
假设有字符串abc123,然后你有两个token类型,一个匹配[a-z]+,一个匹配[a-z]*[0-9]+,那么lexer应该决定使用哪个token🤔
假设有字符串abc123,然后你有两个token类型,一个匹配[a-z]+,一个匹配[a-z]*[0-9]+,那么lexer应该决定使用哪个token🤔
Forwarded from dnaugsuz
啊, 这个看到了;明天再看看
感觉不在我的领域之内,我只是写解析组合子的,那个主要是代码复用封装设计而非列表/关系处理算法和代码生成。
感觉不在我的领域之内,我只是写解析组合子的,那个主要是代码复用封装设计而非列表/关系处理算法和代码生成。
Forwarded from Haruue | 春上ひつき
好像没有直接的方法。。
Show Kotlin Bytecode 然后变回 Java 看?
Show Kotlin Bytecode 然后变回 Java 看?
Forwarded from Deleted Account
也可以先用
感觉分不清注解在哪个结构不至于吧🤔
@receiver:Wtf 这种形式,然后再看一不一样?感觉分不清注解在哪个结构不至于吧🤔
Forwarded from Deleted Account
你之前的 lexer 是基于什么……
lexer 应该不需要状态栈,我觉得用随机访问流和程序控制状态挺好的
lexer 应该不需要状态栈,我觉得用随机访问流和程序控制状态挺好的
Forwarded from Deleted Account
这个冲突问题许多 JavaScript 的框架都有解决,我个人没解决过(因为我觉得程序员不该把这个问题弄出来并且交给框架解决)
方法…… 我觉得还是得先判断谁是谁的子集,拿超集的去匹配,再在结果上判断子集的匹配结果
方法…… 我觉得还是得先判断谁是谁的子集,拿超集的去匹配,再在结果上判断子集的匹配结果
Forwarded from Deleted Account
[a-z]+ 和 [a-z]*\d+
就是
[a-z]+ (\d+)
\d+
两个嘛,你想办法从上面的集合得到下面的集合大概就好了
说白了就是分支平铺吧 🤔
a* b = b or a+ b
就是
[a-z]+ (\d+)
\d+
两个嘛,你想办法从上面的集合得到下面的集合大概就好了
说白了就是分支平铺吧 🤔
a* b = b or a+ b