|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def m_m_refresh(t,tt):
- n=''
- for v in range(t):
- for e in range(20):
- time.sleep(3)
- if tt==True:
- print(n,'=================')
- return True
- else:
- pass
- print(e,tt)
-
复制代码
- _thread.start_new_thread(m_m_refresh,(t,tt))
复制代码
我写了这个函数 初始值 t =1 tt=False
当我运行后 我是想在外部改变tt的值 然后终止函数 可是我在外改变了tt 里面的tt 还是没变
在Python中,当你在不同的线程中使用共享变量时,可能会遇到并发问题。这是因为多个线程同时访问和修改同一个变量,可能导致不可预测的结果。
解决这个问题的常用方法是使用线程锁。线程锁可以确保一次只有一个线程可以访问和修改共享变量。下面是你的代码的修改版本,添加了线程锁:
import _thread
import time
# 创建线程锁对象
lock = _thread.allocate_lock()
def m_m_refresh(t, tt):
global lock #引入全局锁对象
n = ''
for v in range(t):
for e in range(20):
time.sleep(3)
with lock: # 使用with语句获取锁
if tt == True:
print(n, '=================')
return True
else:
pass
print(e, tt)
_thread.start_new_thread(m_m_refresh, (t, tt))
现在,每当你想在外部改变tt的值并终止函数时,你可以使用线程锁,确保修改操作的原子性。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|