gpt4 book ai didi

Python 线程和锁 : Deadlock

转载 作者:太空宇宙 更新时间:2023-11-04 07:45:43 26 4
gpt4 key购买 nike

<分区>

我正在尝试使用锁在线程中写入和读取数据,但有一个我无法解决的死锁 :s。

事情是这样的。由于对我的问题没有用的原因,我必须启动一个线程,该线程本身将启动其他线程。所以我有 : 主要的 -> send_gps_data -> stream_session

我在 stream_session 中写入 gpsData,无限循环(每秒输出一个新报告)。我想在我的主要阅读这些数据。为了避免数据损坏,我想使用阻塞锁。

代码如下:

def main():
lock = threading.Lock()
thread_gps = threading.Thread(None, send_gps_data, args=(gpsData, lock))
gps_thread_gps.start()

# to allow interrupt
while(gm.runn):
try:
time.sleep(0.5)
print "!"
lock.acquire():
gm.display_gpsdata(gpsData)
lock.release()
print "!!"
except KeyboardInterrupt:
gm.runn = 0

def send_gps_data(gpsData, lock):
global runn
gps_thread = threading.Thread(None, stream_session, args=(gpsData, lock))
gps_thread.start()
while(runn):
time.sleep(1)
gps_thread._Thread__stop()
sys.exit(0)

def stream_session(gpsData, session, lock):
for report in session:
if report.get("class") == "TPV":
print ":"
lock.acquire()
fill_gpsdata(gpsData, session, report)
lock.release
print "::"

我的问题是我陷入了僵局。这是我用代码得到的输出: ! !! ! !! : :: ! :

然后它就阻塞了。 . .所以似乎我的锁定释放从未被考虑在内。 . .

我试图将锁创建为全局变量,但它没有改变任何东西。

你能帮我解决这个问题吗?我真的看不出问题

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com