kai*_*iro 1 python sorting multithreading
我正在尝试重新创建一个称为睡眠排序的愚蠢想法,但是输出远非预期。
我期待
0
1
2
3
5
Run Code Online (Sandbox Code Playgroud)
但是我得到
0
5
5
5
5
Run Code Online (Sandbox Code Playgroud)
...这很奇怪,因为线程确实:休眠(项目)秒,然后打印该项目。
这是我的代码
0
1
2
3
5
Run Code Online (Sandbox Code Playgroud)
我的代码有问题吗?非常感谢您提前!
这是许多语言的典型行为,由“后期绑定”引起。您应该明确传递参数以避免这种情况,并且还应该使用诸如“python 后期绑定”之类的东西。
def sleepSort(lst):
for item in lst:
threading.Thread(target = lambda item: (
time.sleep(item),
print(item)
), args=(item, )).start()
Run Code Online (Sandbox Code Playgroud)