import multiprocessing import multiprocessing.managers #This starts a server (mulitprocessing basemanager) where all standalones store their current measurement values and set_parameters. This data can be accessed from #all python instances running on this computer. It can be extended so it can be reached from other PCs aswell. #The dictionarioes which store the values must be initialized and registered here. To register a new dictionary an (empty) dictionary must be created and a function #must be defined which returns this dictionary. After that the dictionary must be registered in the manager. This is done with: #MyListManager.register('syncdict',get_dict) where 'syncdict' is the name that other programs use to reach this dictionary and get_dict the function which return the #dictionary. #The values don't have to be stored in dictionaries. List or simple variables also work. But I haven't tested all posibillities. #To access these dictionaries from other programs, a basemanager must be created in the program which is then connected to the manager created here. There the #dictionary must also be registered. Finally a local variable is created which points at the dictionary on this server. The following example is from Keysigh_U2042XA_control #manager = multiprocessing.managers.BaseManager(address=('localhost',5001), authkey=b'') #manager.connect() #manager.register('sync_K_U2042XA') #self.sync_K_U2042XA = manager.sync_K_U2042XA() <- the local variable "self.sync_K_U2042XA" can have any name class MyListManager(multiprocessing.managers.BaseManager): pass #!!! #please use unambigous names #!!! syncdict = {} #dummy where everything can be stored sync_K_U2042XA = {} sync_K_34461A = {} sync_T_LS6081B = {} sync_LS_336 = {} sync_LS_218 = {} sync_BK_9131B = {} sync_BK_9132B = {} sync_BK_9132B_2 = {} sync_BK_9174B = {} sync_BK_9174B_2 = {} sync_Keithley_2230G = {} sync_imc = {} sync_converted = {} sync_main = {} #Sync dictionary for the control of Main.py (for the automation of measurements) def get_dict(): return syncdict def get_dict_sync_K_U2042XA(): return sync_K_U2042XA def get_dict_sync_K_34461A(): return sync_K_34461A def get_dict_sync_T_LS6081B(): return sync_T_LS6081B def get_dict_sync_LS_336(): return sync_LS_336 def get_dict_sync_LS_218(): return sync_LS_218 def get_dict_sync_BK_9131B(): return sync_BK_9131B def get_dict_sync_BK_9132B(): return sync_BK_9132B def get_dict_sync_BK_9132B_2(): return sync_BK_9132B_2 def get_dict_sync_BK_9174B(): return sync_BK_9174B def get_dict_sync_BK_9174B_2(): return sync_BK_9174B_2 def get_dict_sync_Keithley_2230G(): return sync_Keithley_2230G def get_dict_sync_imc(): return sync_imc def get_dict_sync_converted(): return sync_converted def get_dict_main(): return sync_main def main(): MyListManager.register('syncdict',get_dict) MyListManager.register('sync_K_U2042XA',get_dict_sync_K_U2042XA) MyListManager.register('sync_T_LS6081B',get_dict_sync_T_LS6081B) MyListManager.register('sync_LS_336',get_dict_sync_LS_336) MyListManager.register('sync_K_34461A',get_dict_sync_K_34461A) MyListManager.register('sync_LS_218',get_dict_sync_LS_218) MyListManager.register('sync_BK_9131B', get_dict_sync_BK_9131B) MyListManager.register('sync_BK_9132B', get_dict_sync_BK_9132B) MyListManager.register('sync_BK_9132B_2', get_dict_sync_BK_9132B_2) MyListManager.register('sync_BK_9174B', get_dict_sync_BK_9174B) MyListManager.register('sync_BK_9174B_2', get_dict_sync_BK_9174B_2) MyListManager.register('sync_Keithley_2230G', get_dict_sync_Keithley_2230G) MyListManager.register('sync_imc', get_dict_sync_imc) MyListManager.register('sync_converted', get_dict_sync_converted) MyListManager.register('sync_main', get_dict_main) manager = MyListManager(address=('localhost',5001), authkey=b'') manager.start() input("Press Enter (Not Str+C) to exit. But kill client first".center(50,"-")) #keeps program running until enter is pressed manager.shutdown() if __name__ == '__main__': main()