我设计了一个系统,通过套接字获取数据,并将其存储到字典中作为数据库。然后,我的所有其他模块(GUI、analysis、write_-u-to-u-log_-file等)都将访问数据库,并对字典执行所需的操作,例如制作小部件/将字典复制到日志文件。但是由于所有这些事情都以不同的速率发生,所以我选择让每个模块都在自己的线程上,这样我就可以控制频率。在
在主运行函数中有如下内容:from threading import Thread
import data_collector
import write_to_log_file
def main():
db = {}
receive_data_thread = Thread(target=data_collector.main, arg=(db,))
recieve_data_thread.start() # writes to dictionary @ 50 Hz
log_data_thread = Thread(target=write_to_log_file.main, arg(db,))
log_data_thread.start() # reads dictionary @ 1 Hz
但是这两个模块似乎并不是在同一个dictionary实例上工作,因为log_data_线程只会打印出空字典,即使data_collector显示它插入到字典中的数据也是如此。在
字典中只有一个编写器,所以我不必担心线程会相互踩在一起,我只需要找出一种方法,让所有模块在编写当前数据库时读取它。在