Python中的本地线程与CSP通道

1 投票
1 回答
1043 浏览
提问于 2025-04-17 08:35

我在寻找一种在Python中基于原生线程实现CSP通道的方法。我看到了一些相关的库,但它们的功能太多,几乎什么都有。

具体来说,我想要的是能够等待一组发送和接收操作中第一个完成的操作,并且要么把第一个完成的结果返回给我,要么调用一个回调函数。

这里有一些相关的链接,供你了解更多背景信息:

1 个回答

1

是的,我的库 python-csp 包含了你提到的所有功能。你可以在这里找到这个库:https://github.com/futurecore/python-csp

这里有一个简单的例子,展示了通道和 ALTing(也叫非确定性选择):

>>> @process
... def send_msg(chan, msg):
...     chan.write(msg)
... 
>>> @process
... def alt_example(chan1, chan2):
...     alt = Alt(chan1, chan2)
...     print alt.select()
...     print alt.select()
... 
>>> c1, c2 = Channel(), Channel()
>>> Par(send_msg(c1, 'yes'), send_msg(c2, 'no'), alt_example(c1, c2)).start()
yes
no
>>>

我正在对内部结构进行重构和清理,所以请留意不久后会有新版本发布。如果你有兴趣,也可以随时给我发邮件讨论。

撰写回答