@@ -293,11 +293,18 @@ def run_simulation(self, debug=False, failed_logs_dir=''):
293293 logger .warning ('Discarding Result %s as having an infinite objective function value' % res .name )
294294 res .simdata = None
295295 if self .delete_folder :
296- try :
297- shutil .rmtree (self .folder )
298- self .jlogger .debug ('Removed folder %s' % self .folder )
299- except OSError :
300- self .jlogger .error ('Failed to remove folder %s.' % self .folder )
296+ if os .name == 'nt' : # Windows
297+ try :
298+ shutil .rmtree (self .folder )
299+ self .jlogger .debug ('Removed folder %s' % self .folder )
300+ except OSError :
301+ self .jlogger .error ('Failed to remove folder %s.' % self .folder )
302+ else :
303+ try :
304+ run (['rm' , '-rf' , self .folder ], check = True , timeout = 1800 )
305+ self .jlogger .debug ('Removed folder %s' % self .folder )
306+ except (CalledProcessError , TimeoutExpired ):
307+ self .jlogger .error ('Failed to remove folder %s.' % self .folder )
301308
302309 return res
303310
@@ -988,10 +995,13 @@ def run(self, client, resume=None, debug=False):
988995 if (isinstance (self , SimplexAlgorithm ) or self .config .config ['refine' ] != 1 ) and self .bootstrap_number is None :
989996 # End of fitting; delete unneeded files
990997 if self .config .config ['delete_old_files' ] >= 1 :
991- try :
992- shutil .rmtree (self .sim_dir )
993- except OSError :
994- logger .error ('Failed to remove simulations directory ' + self .sim_dir )
998+ if os .name == 'nt' : # Windows
999+ try :
1000+ shutil .rmtree (self .sim_dir )
1001+ except OSError :
1002+ logger .error ('Failed to remove simulations directory ' + self .sim_dir )
1003+ else :
1004+ run (['rm' , '-rf' , self .sim_dir ]) # More likely to succeed than rmtree()
9951005
9961006 logger .info ("Fitting complete" )
9971007
0 commit comments