Hi Dennis, all function arguments declare as global and pass it to the function.
All three thread is completed the execution part and after completion of execution its stuck/hang the programme. *def validate_traffic_stats_st(FT_item,RT_item,forward_path_list,return_path_list,nat_type_list,pkt_st)* : global flag1 flag1 = 1 log.info('Starting Static NAT forward Traffic Test...') returndict = itgen_explorer.startTrafficFlows(testbeddict, log,'-traffic_items {0} -pktcount {1} -profile {2}'.format(FT_item,pkt_st,itgenProfile)) time.sleep(5) global_stats_list = [] temp = 0 forward_ip_list = [] return_ip_list = [] global count_st_Rx,count_st_in_Rx,count_st_out_Rx count_st_Rx = 0 count_st_in_Rx = 0 count_st_out_Rx = 0 for data in returndict['txrxstats']['rx'].keys(): if "TI01" in data: count_st_Rx += int(returndict['txrxstats']['rx'][data] ) count_st_in_Rx += int(returndict['txrxstats']['rx'][data] ) elif "TI22" in data: count_st_Rx += int(returndict['txrxstats']['rx'][data] ) count_st_out_Rx += int(returndict['txrxstats']['rx'][data] ) global count_st_Tx,count_st_in_Tx,count_st_out_Tx count_st_Tx = 0 count_st_in_Tx = 0 count_st_out_Tx = 0 for data in returndict['txrxstats']['tx'].keys(): if "TI01" in data: count_st_Tx += int(returndict['txrxstats']['tx'][data] ) count_st_in_Tx += int(returndict['txrxstats']['tx'][data] ) elif "TI22" in data: count_st_Tx += int(returndict['txrxstats']['tx'][data] ) count_st_out_Tx += int(returndict['txrxstats']['tx'][data] ) for forward_ip_list,return_ip_list,nat_type in zip (forward_path_list,return_path_list,nat_type_list): global_stats_list = [] for translation_ip,return_ip in zip (forward_ip_list,return_ip_list): output=listtostr(returndict['txrxstats']['rx']) if re.search('{0}'.format(translation_ip),output,re.I): pass else: global_stats_list.append(translation_ip) if global_stats_list == []: log.info('itgen traffic validation for {0} forward path - verified'.format(nat_type)) forward_ip_list = [] return_ip_list = [] else: log.error('{0} forward path itgen verification failed'.format(nat_type)) flag1 = 0 return flag1 log.info("Trafiic validation for NAT return path starting") returndict = itgen_explorer.startTrafficFlows(testbeddict, log,'-traffic_items {0} -pktcount 1000 -profile {1}'.format(RT_item,itgenProfile)) time.sleep(5) local_stats_list = [] for forward_ip_list,return_ip_list,nat_type in zip (forward_path_list,return_path_list,nat_type_list): local_stats_list = [] for translation_ip,return_ip in zip (forward_ip_list,return_ip_list): output=listtostr(returndict['txrxstats']['rx']) if re.search('{0}'.format(return_ip),output,re.I): pass else: local_stats_list.append(return_ip) if local_stats_list == []: log.info('itgen traffic validation for {0} return path - verified'.format(nat_type)) forward_ip_list = [] return_ip_list = [] else: log.error('{0} return path itgen verification failed'.format(nat_type)) flag1 = 0 return flag1 return flag1,count_st_Rx,count_st_in_Rx,count_st_out_Rx,count_st_Tx,count_st_in_Tx,count_st_out_Tx *def validate_traffic_stats_dy(FT_item,RT_item,forward_path_list,return_path_list,nat_type_list,pkt_dy_1):* global flag2 flag2 = 1 log.info('Starting Dynamic NAT forward Traffic Test...') returndict = itgen_explorer.startTrafficFlows(testbeddict, log,'-traffic_items {0} -pktcount {1} -profile {2}'.format(FT_item,pkt_dy_1,itgenProfile)) time.sleep(5) global_stats_list = [] forward_ip_list = [] return_ip_list = [] global count_dy_Rx,count_dy_in_Rx,count_dy_out_Rx count_dy_Rx = 0 count_dy_in_Rx = 0 count_dy_out_Rx = 0 for data in returndict['txrxstats']['rx'].keys(): if "TI05" in data: count_dy_Rx += int(returndict['txrxstats']['rx'][data] ) count_dy_in_Rx += int(returndict['txrxstats']['rx'][data] ) elif "TI66" in data: count_dy_Rx += int(returndict['txrxstats']['rx'][data] ) count_dy_out_Rx += int(returndict['txrxstats']['rx'][data] ) global count_dy_Tx,count_dy_in_Tx,count_dy_out_Tx count_dy_Tx = 0 count_dy_in_Tx = 0 count_dy_out_Tx = 0 for data in returndict['txrxstats']['tx'].keys(): if "TI05" in data: count_dy_Tx += int(returndict['txrxstats']['tx'][data] ) count_dy_in_Tx += int(returndict['txrxstats']['tx'][data] ) elif "TI66" in data: count_dy_Tx += int(returndict['txrxstats']['tx'][data] ) count_dy_out_Tx += int(returndict['txrxstats']['tx'][data] ) for forward_ip_list,return_ip_list,nat_type in zip (forward_path_list,return_path_list,nat_type_list): global_stats_list = [] for translation_ip,return_ip in zip (forward_ip_list,return_ip_list): output=listtostr(returndict['txrxstats']['rx']) if re.search('{0}'.format(translation_ip),output,re.I): pass else: global_stats_list.append(translation_ip) if global_stats_list == []: log.info('itgen traffic validation for {0} forward path - verified'.format(nat_type)) forward_ip_list = [] return_ip_list = [] else: log.error('{0} forward path itgen verification failed'.format(nat_type)) flag2 = 0 return flag2 log.info("Trafiic validation for NAT return path starting") returndict = itgen_explorer.startTrafficFlows(testbeddict, log,'-traffic_items {0} -pktcount 1000 -profile {1}'.format(RT_item,itgenProfile)) time.sleep(5) local_stats_list = [] for forward_ip_list,return_ip_list,nat_type in zip (forward_path_list,return_path_list,nat_type_list): local_stats_list = [] for translation_ip,return_ip in zip (forward_ip_list,return_ip_list): output=listtostr(returndict['txrxstats']['rx']) if re.search('{0}'.format(return_ip),output,re.I): pass else: local_stats_list.append(return_ip) if local_stats_list == []: log.info('itgen traffic validation for {0} return path - verified'.format(nat_type)) forward_ip_list = [] return_ip_list = [] else: log.error('{0} return path itgen verification failed'.format(nat_type)) flag2 = 0 return flag2 return flag2,count_dy_Rx,count_dy_in_Rx,count_dy_out_Rx,count_dy_Tx,count_dy_in_Tx,count_dy_out_Tx *def* *delete_new_dynamic_nat_conf():* global pool_dy_in_new,acl_name_dy_in_new,pool_name_dy_in_new direction_in = 'inside' log.info("Deleting Dynamic NAT new entries") delete_dynamic_nat_conf(uut2_hdl2, direction_in, acl_name_dy_in_new, pool_name_dy_in_new, ) #remove pool and acl name log.info('Removing access-list') deleteACL(uut2_hdl2, log, '-type {0} -name {1}'.format('ip', acl_name_dy_in_new)) log.info('Unconfiguring pool on UUT') add_remove_pool(uut2_hdl2, 'unconfigure', pool_dy_in_new) return 1 On Thu, Apr 27, 2017 at 9:04 PM, Dennis Lee Bieber <wlfr...@ix.netcom.com> wrote: > On Thu, 27 Apr 2017 19:48:24 +0530, Iranna Mathapati > <iranna.gan...@gmail.com> declaimed the following: > > >Hi Team, > > > >I have python code that creates thread.Sometimes it works, sometimes it > >gets stuck once its finish its execution part. still not yet cannot find > >any difference between when it works or when it gets stuck. Please help. > > > > > >sniffer1 = > >threading.Thread(target=validate_traffic_stats_dy, > args=(FT_item_dy,RT_item_dy,forward_path_list_dy,return_ > path_list_dy,nat_type_list_dy,pkt_dy_1,)) > > > >sniffer2 = > >threading.Thread(target=validate_traffic_stats_st, > args=(FT_item_st,RT_item_st,forward_path_list_st,return_ > path_list_st,nat_type_list_st,pkt_st,)) > > > >sniffer1.start() > > > >sniffer2.start() > > > >sniffer3 = threading.Thread(target=delete_new_dynamic_nat_conf) > > > >sniffer3.start() > > > > So where is the code for the three thread functions? Where do the > various argument values come from? > -- > Wulfraed Dennis Lee Bieber AF6VN > wlfr...@ix.netcom.com HTTP://wlfraed.home.netcom.com/ > > -- > https://mail.python.org/mailman/listinfo/python-list > -- https://mail.python.org/mailman/listinfo/python-list