• python线程问题、深浅拷贝、属性动态设置


    一、发现之前没有线程的日志,写了一个简单的,参考来源:https://www.cnblogs.com/vamei/archive/2012/10/11/2720042.html

    import threading
    def demo(i):
        print("线程名",i)
    
    try:
        i = 0
        # 开启线程数目
        tasks_number = 10
        print('测试启动')
        ths = []
        # threadLock = threading.Lock()
        while i < tasks_number:
            # target:运行目标内容, name:线程名 ,这里的args会作为target入参
            t = threading.Thread(target=demo,name=f"线程{i}",args=(i,))
            ths.append(t)
            i += 1
        for i in ths:
            i.start()
        for i in ths:
            i.join()
        print("退出线程")
    except Exception as e:
        print(e)

    二、深浅拷贝

    浅拷贝只复制指向某个对象的指针而不复制对象本身,新旧对象还是共享同一块内存。

    但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象

    import copy
    a=['hello',[1,2,3],{'a':1,'b':2},[[1],2]]
    b=a
    c=copy.copy(a)
    print([id(x) for x in a])
    print([id(x) for x in b])
    
    a[0]='world'
    a[1].append(4)
    a[2]['a']=5
    
    print('a=',a)
    # a= ['world', [1, 2, 3, 4], {'a': 5, 'b': 2}, [[1], 2]]
    print('b=',b)
    # b= ['world', [1, 2, 3, 4], {'a': 5, 'b': 2}, [[1], 2]]
    print('c=',c)
    # c= ['hello', [1, 2, 3, 4], {'a': 5, 'b': 2}, [[1], 2]]
    # 由于a[1]是不可变数据类型,所以a[0]修改了,c[0]仍然指向的是原来的地址

    参考来源:https://zhuanlan.zhihu.com/p/25221086

    三、属性动态设置

    1、hasattr(object, name)
    判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False。
    2、getattr(object, name[,default])
    获取对象object的属性或者方法,如果存在打印出来,如果不存在,打印出默认值,默认值可选。
    3、setattr(object, name, values)
    给对象的属性赋值,若属性不存在,先创建再赋值。
    4、delattr(object, name)
    delattr函数用于删除name属性
    delattr(x, ‘foobar’)相当于del x.foobar

    测试进阶轨迹
  • 相关阅读:
    ASP.NET API盘点
    C# POST与Get数据
    洛谷 P3373 【模板】线段树 2
    洛谷 P1972 [SDOI2009]HH的项链
    洛谷 P1113 杂务(vector)
    POJ 3249 Test for Job
    POJ 1734 Sightseeing trip(Floyd)
    洛谷 P1202 [USACO1.1]黑色星期五Friday the Thirteenth
    洛谷 P1484 种树
    洛谷 P1801 黑匣子_NOI导刊2010提高(06)
  • 原文地址:https://www.cnblogs.com/yinwenbin/p/14576368.html
Copyright © 2020-2023  润新知