[问题] threading Lock无作用

楼主: tsaiminghan (tsaiminghan)   2022-05-28 08:47:12
我在使用一套测试软件,只需提供被呼叫的函式
没有测试软的程式码,只有被呼叫的函式
环境是ubuntu20.04, python是3.8.10
流程大约如下,可以一次进行多台设备测试
init -> ge_set -> test -> teardown -> clean
其中我在init和get_sn中使用同样的程式,但是
似乎在init中Lock无效,但是get_sn中有效,不
知道是否有人能提供意见?
程式大约如下
========================================
class G: pass
G.duts = None
Lock = threading.Lock()
def init(logger):
with Lock:
logger.info(str(G.duts))
if G.duts is None:
G.duts = 1
logger.info(str(G.duts))
def get_sn(test_data):
"""
with Lock:
test_data.logger.info(str(G.duts))
if G.duts is None:
G.duts = 1
test_data.logger.info(str(G.duts))
"""
def clean(logger):
G.duts = None
========================================
一次进行两台设备的测试时,
在init印出来的输出分别是
None 1 和 None 1
如果改在get_sn印出来的是
None 1 和 1 1
在init中,我有试过os.getpid(),
回传的数字相同 应该不是不同process
还是我的Lock使用方法有误?
我试过以下,结果也一样。
Lock.acquire()
Lock.release()
作者: lycantrope (阿宽)   2022-05-28 10:49:00
贴上来的部分感觉没什么问题,可能其他地方有写错吧
作者: Woqeker (窝颗ker)   2022-05-28 14:29:00
改用外部的 lock? redis 之类的
作者: aalexx (aalexx.S)   2022-06-07 03:15:00
那两个function都是class static???

Links booklink

Contact Us: admin [ a t ] ucptt.com