我发现了Goroutines的python实现,https://goless.readthedocs.org/en/latest/并在玩
在文档中给出以下代码:
c1 = goless.chan()
c2 = goless.chan()
def func1():
time.sleep(1)
c1.send('one')
goless.go(func1)
def func2():
time.sleep(2)
c2.send('two')
goless.go(func2)
for i in range(2):
case, val = goless.select([goless.rcase(c1), goless.rcase(c2)])
print(val)
它打印:
one
two
有关
select
方法的文档所以我继续将
sleep(1)
更改为sleep(3)
,如下所示:c1 = goless.chan()
c2 = goless.chan()
def func1():
time.sleep(3)
c1.send('one')
goless.go(func1)
def func2():
time.sleep(2)
c2.send('two')
goless.go(func2)
for i in range(2):
case, val = goless.select([goless.rcase(c1), goless.rcase(c2)])
print(val)
我认为它会打印:
two
one
但它打印:
one
two
这是为什么?
最佳答案
由于没有答案,所以我去研究了项目仓库,在这里找到了一个类似的问题:
https://github.com/rgalanakis/goless/issues/42
最值得注意的是:
因此,似乎我误解了goless会创建不同的线程,但是我错了。
关于python - 了解goless.select从示例代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31467321/