#使用100个线程往list中添加1000条数据,要求保证安全性,并正确记录数量
老铁们这样写可以吗?还请指点
number=0lists = []
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)
回答:
list 操作是线程安全的,线程只管 append 就行了,最后 list 的长度就是记录数。
number+=1
反而不是线程安全的,因此多个线程同时累加同一个变量,结果是不可预知的。
回答:
list不需要global声明
多线程对全局变量修改不安全,就是那个number
以上是 #使用100个线程往list中添加1000条数据,要求保证安全性,并正确记录数量 的全部内容, 来源链接: utcz.com/a/40495.html