为什么在这种情况下我的线程锁定失败?

时间:2019-04-26 03:59:59

标签: python multithreading

在每个线程中,我想通过函数get_next_page_data以递归的方式获取所有数据列表,当我打印出指定数据的长度时,预期的初始参数return_data应该是{{1} }

但输出显示:

[]

为什么在这种情况下我的线程锁定失败?


0 831
831 387
1218 1000
2218 1000
3218 529
3747 1000
4747 1000
5747 458
6205 1000
7205 1000
8205 616
8821 378
9199 188
9387 1000
10387 957

1 个答案:

答案 0 :(得分:0)

问题不在于锁-而是默认参数。仅在执行函数定义时评估一次。

您的所有线程共享一个实例return_data

查看一个简单的示例:

def append_to_list(el, list_to_append=[]):
    list_to_append.append(el)
    return list_to_append

print(append_to_list(1))
print(append_to_list(2))