Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
474 views
in Technique[技术] by (71.8m points)

#使用100个线程往list中添加1000条数据,要求保证安全性,并正确记录数量

老铁们这样写可以吗?还请指点

number=0
lists = []
def works():
    global lists
    global number

    for i in range(10):
        lists.append(number)
        number+=1

    if len(lists)==1000:
        return lists
if __name__ == '__main__':
    t=ThreadPoolExecutor(max_workers=100)# 创建100个线程
    start=time()
    for i in range(100):
        f=t.submit(works)  # 启动线程干活

    if len(f.result())!=0:
       for result in f.result():
           print(result)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

list 操作是线程安全的,线程只管 append 就行了,最后 list 的长度就是记录数。

number+=1 反而不是线程安全的,因此多个线程同时累加同一个变量,结果是不可预知的。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...