嗨,我目前正在开发一个项目,大纲如下
3-10个selenium浏览器每个浏览器监视相同的queue.json文件如果queue.json文件中包含某些内容,则其中一个selenium浏览器需要获取url
目前,此python脚本使用python shell连接到一个简单的electronjs GUI,当我单击按钮时,该gui运行一个异步函数,该函数打开selenium浏览器,然后在监控queue.json文件的while True循环中循环
问题是,当我向queue.json文件添加某些内容时,多个selenium浏览器将在浏览器从队列中删除项之前从队列中选取相同的项
有没有办法让queue.json一次只能被一个浏览器访问?
发布于 2020-06-27 07:26:16
使用Lock
。
锁允许您从多个线程访问数据,而无需同时访问所有线程。当一个线程持有锁时,其他线程不能使用它,直到初始线程释放锁为止。
from threading import Lock
l = Lock()
with l:
# access json queue
使用python的Queue
您可以将数据放在python的threading.Queue
中;它是线程安全的
from threading import Queue
https://stackoverflow.com/questions/62604150
复制相似问题