'''
全局变量存储.py文件.
为了能够获取训练过程中test_acc,best_acc和best_param的即时变化,反映到pageTwo的即时动态折线图上.
需要把test_acc,best_acc和best_param设置为全局变量,让训练模块可以对它进行更改,pageTwo也可以对它进行读取.
训练模块负责写入,pageTwo负责读出并显示.这样就满足了条件.
当然,这样一来,所有优化算法的代码就必须重写以使用全局变量了.

另外一个需要全局变量的内容是数据集.
获取数据集并预处理需要的时间是非常非常长的,所以获取数据集也得用线程编程,而且还不能并行,只能让主线程等待,因为没有数据集的话训练是无法开始的.
所以这里又添加了train_data和test_data全局变量,能够在不同的模块中操作数据集.

另另外一个需要全局变量的是标记变量(boolean).
这个标记变量的作用是表示训练过程的结束与否.如果结束的话,标记变量改为True,pageTwo将根据这个变量值,保存运行结果的图片.
不然,过程中的所有图片都保存下来,是很不合理的.

最后的全局变量是为了和数据库实现对接的.
每次向数据库中新增一条信息或者从数据库中删除一条信息的时候,都会改版数据库表的条数.
因为要把.csv文件和.png文件全都放在一个文件夹中,所以这些文件的命名绝不可以相同,不然会互相覆盖.
所以最好的办法就是,查看当前的数据库条目数量,作为一个全局变量,在运行过程中严格监督任何导致该全局变量变化的操作,确保文件命名的正确性.

最最最后一个全局变量是用于控制优化过程中的进度条显示的,也就是优化迭代次数.
每次开始优化时,将本次优化将会迭代的次数设置好,然后在优化过程中,每当需要更新优化数据时,一同更新进度条.

最最最最后的全局变量是用来给遗传算法和粒子群算法标定种群隔离线的.
只有遗传算法和粒子群算法的作图中可以用得到.

最最最最最后的全局变量用于标识优化过程中的网络模型.如果已经有了,就没必要重复获取.

最最最最最最后的全局变量用于存储数据库账号信息,在每次程序开始运行时即被改变.
'''

test_acc = []
best_acc = []
best_param = None

train_data = None
test_data = None

test_over = False
best_over = False

num_opt = 0 # 下一个应该被新插入的值.
num_exist = 0 # 目前数据库表中的条目数.
after_create = False
after_insert = False

full_bar = 0

axv = []

path = None

host = None
user = None
password = None