我正在使用Queue()
和Thread()
来分解一些与硒有关的工作
q = Queue()
urls = [www.1.com, www.2.com,...]
final_list = []
我想从urls
列表中取出项目,并将它们传递到final_list
中,该数据将写入数据库。我希望能够“散开” URL的读取/抓取,但只希望有1个作家而不是线程将其写入数据库
def worker():
while True:
url = q.get()
final_list.append(url)
q.task_done()
for i in range(2):
t = Thread(target=worker)
t.dameon = True
t.start
这有效。
我不了解如何编写一个在final_list
中查找新元素的函数,并在出现时将其写入数据库。
我不确定这是否可能?我是否必须在线程中执行此操作(写入数据库)?
类似的东西:
def write_to_db():
item = final_list.pop(0)
db_session.add(item)
db_session.commit()
我正在使用SQLAlchemy
engine = create_engine('...')
db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
我不确定如何使write_to_db()
与监听final_list
的线程同时运行