爲Python串操作安全我有兩個線程調用以下功能:多線程經由「%」
template = 'My name is %s'
def sayhi(name):
global template
print template % name
線程A將調用如下:
sayhi('Tom')
線程B將調用如如下:
sayhi('Jerry')
我的問題是全局var'模板'是否安全。
非常感謝!
爲Python串操作安全我有兩個線程調用以下功能:多線程經由「%」
template = 'My name is %s'
def sayhi(name):
global template
print template % name
線程A將調用如下:
sayhi('Tom')
線程B將調用如如下:
sayhi('Jerry')
我的問題是全局var'模板'是否安全。
非常感謝!
由於template
永不改變,代碼是完美的罰款,並會按預期工作。
(如果template
是如有更改,這將事情複雜化有點,答案是「這取決於你期待什麼。」)
事實上,由於'template'永遠不會改變,所以根本不需要'global'聲明。 –
我覺得你擔心的是,template
是關鍵部分。在更復雜的情況下,如果template
的值將被更改,則必須在更改之前使用鎖。像這樣,在你們兩個線程中:
.....
mylock = threading.RLock()
mylock.acquire()
# do something to template
mylock.release()
....
'template'是否改變過? – NPE
@NPE global var'template'在運行時間內不會改變。 – cnnbcza