@@ -296,6 +296,8 @@ def transfer_all(metrics, limit=100, profile_waterlevels: bool = True):
296296 transfer_minor_trace_chemistry ,
297297 transfer_nma_stratigraphy ,
298298 transfer_associated_data ,
299+ profile_waterlevels ,
300+ profile_artifacts ,
299301 )
300302 else :
301303 _transfer_sequential (
@@ -329,6 +331,8 @@ def transfer_all(metrics, limit=100, profile_waterlevels: bool = True):
329331 profile_artifacts ,
330332 )
331333
334+ return profile_artifacts
335+
332336
333337def _transfer_parallel (
334338 metrics ,
@@ -357,6 +361,8 @@ def _transfer_parallel(
357361 transfer_minor_trace_chemistry ,
358362 transfer_nma_stratigraphy ,
359363 transfer_associated_data ,
364+ profile_waterlevels ,
365+ profile_artifacts ,
360366):
361367 """Execute transfers in parallel where possible."""
362368 message ("PARALLEL TRANSFER GROUP 1" )
@@ -548,24 +554,31 @@ def _transfer_parallel(
548554 ("Acoustic" , WaterLevelsContinuousAcousticTransferer , flags )
549555 )
550556
551- with ThreadPoolExecutor (max_workers = 2 ) as executor :
552- futures = {}
557+ if profile_waterlevels :
553558 for name , klass , task_flags in parallel_tasks_2 :
554- future = executor .submit (
555- _execute_transfer_with_timing , name , klass , task_flags
556- )
557- futures [future ] = name
558-
559- for future in as_completed (futures ):
560- name = futures [future ]
561- try :
562- result_name , result , elapsed = future .result ()
563- results_map [result_name ] = result
564- logger .info (
565- f"Parallel task { result_name } completed in { elapsed :.2f} s"
559+ profiler = TransferProfiler (f"waterlevels_continuous_{ name .lower ()} " )
560+ results , artifact = profiler .run (_execute_transfer , klass , task_flags )
561+ profile_artifacts .append (artifact )
562+ results_map [name ] = results
563+ else :
564+ with ThreadPoolExecutor (max_workers = 2 ) as executor :
565+ futures = {}
566+ for name , klass , task_flags in parallel_tasks_2 :
567+ future = executor .submit (
568+ _execute_transfer_with_timing , name , klass , task_flags
566569 )
567- except Exception as e :
568- logger .critical (f"Parallel task { name } failed: { e } " )
570+ futures [future ] = name
571+
572+ for future in as_completed (futures ):
573+ name = futures [future ]
574+ try :
575+ result_name , result , elapsed = future .result ()
576+ results_map [result_name ] = result
577+ logger .info (
578+ f"Parallel task { result_name } completed in { elapsed :.2f} s"
579+ )
580+ except Exception as e :
581+ logger .critical (f"Parallel task { name } failed: { e } " )
569582
570583 if "Pressure" in results_map and results_map ["Pressure" ]:
571584 metrics .pressure_metrics (* results_map ["Pressure" ])
0 commit comments