我刚开始使用Python,所以请耐心等待 .
我的代码现在看起来像这样(简化)
lst = []
def func1():
while True:
**doing some stuff with selenium, performing some operations on lst**
**I never break the loop**
def func2():
while True:
**doing some stuff with selenium, performing some operations on lst**
**I never break the loop**
到现在为止还挺好 . 但是,我需要同时运行这两个函数,同时还要对同一个列表执行操作并进行交换 . 例如,func1可能会向lst附加某些内容,而func2可能会从lst中删除某些内容,然后func1可能会删除某些内容等 . 这两个函数都需要无限期运行,因此infinte循环不会让它变得更容易 .
我读了一些关于多线程的内容,但是根据我的理解,多线程并不真正并行,所以我的代码执行速度会慢一点 . 这根本不是一个选择 . 我还读到多线程和Selenium并不完全是天上的匹配 .
那么,我该怎么做呢?我需要这两个函数能够在我的列表上执行操作,同时无限期地运行 .
我也可以在Multiprocessing的东西上使用一些帮助 . 映射,池,队列...我甚至不知道从哪里开始 .
我真的需要你的帮助,我非常感激 .
其他信息(我真的不知道它是否重要):所有这些都是在使用Python 2.7和Selenium和Chromedriver的Windows机器上运行的 .
1 回答
使用shared list proxy和lock在进程之间同步
lst
.伪代码:
请注意,默认情况下
lst
中的项应该是标量,Python使用卷影副本进行进程之间的同步 .如果
lst
包含其他类型的元素(如list或dict或object),则必须将其重新分配给lst
每个操作 .