从品牌网站建设到网络营销策划,从策略到执行的一站式服务
import threading
import time
def worker():
x = 0
for i in range(100):
time.sleep(0.0001)
x += 1
print(threading.current_thread(), x)
for i in range(3):
threading.Thread(target=worker).start()
class A:
def __init__(self):
self.x = 0
def worker():
global_data.x = 0
for i in range(100):
time.sleep(0.0001)
global_data.x += 1
print(threading.current_thread(), global_data.x)
for i in range(3):
threading.Thread(target=worker).start()
# 测试发现结果不是我们期望的那样
将全局变量,变换成线程的局部变量
创新互联建站主要从事网站设计、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务张家口,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
global_data = threading.local()
def worker():
global_data.x = 0
for i in range(100):
time.sleep(0.0001)
# x += 1
global_data.x += 1
print(threading.current_thread(), global_data.x)
for i in range(3):
threading.Thread(target=worker).start()
X = 'abc'
ctx = threading.local()
ctx.x = 123 # 留意下这一句
print(ctx, type(ctx), ctx.x)
def worker():
print(X)
print(ctx)
# ctx.x = '11111' # 注释掉这一行,会报错。去掉注释在执行一次
print(ctx.x)
print('working')
worker()
print('========')
threading.Thread(target=worker).start()
# 第三行,因为这个变量在定义的时候是在当前线程下,而threading.local是不能跨线程的
# 所以在启子线程的时候,重新访问这个变量的时候会抛出异常
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图