zooui.objects.mediaobjects.mediaobjectsutils.string.parallellayout module

ParallelLayoutCalculator class for parallel text layout calculation.

This class manages parallel calculation of text layouts using thread pools, ensuring thread safety and efficient resource usage.

class zooui.objects.mediaobjects.mediaobjectsutils.string.parallellayout.CalculationStatus(*values)[source]

Bases: Enum

Status of layout calculation.

PENDING = 0
IN_PROGRESS = 1
COMPLETED = 2
FAILED = 3
CANCELLED = 4
class zooui.objects.mediaobjects.mediaobjectsutils.string.parallellayout.CalculationResult(status, layout_data=None, error=None, processing_time_ms=0.0, timestamp=<factory>)[source]

Bases: object

Result of a layout calculation.

status
layout_data = None
error = None
processing_time_ms = 0.0
timestamp
class zooui.objects.mediaobjects.mediaobjectsutils.string.parallellayout.ParallelLayoutCalculator(max_workers=None, batch_timeout_ms=5000.0, enable_profiling=False)[source]

Bases: object

Manages parallel calculation of text layouts using thread pools.

This class provides thread-safe parallel calculation of text layouts for batches of objects, with progress tracking and error handling.

max_workers

Maximum number of worker threads

batch_timeout_ms

Timeout for batch calculations in milliseconds

enable_profiling

Whether to enable performance profiling

thread_pool

Thread pool executor for parallel calculations

calculation_queue

Queue for pending calculations

results_cache

Cache for calculation results

lock

Thread lock for thread-safe operations

shutdown_event

Event to signal shutdown

Initialize the ParallelLayoutCalculator.

Parameters:
  • max_workers – Maximum number of worker threads (default: CPU count)

  • batch_timeout_ms – Timeout for batch calculations (default: 5000ms)

  • enable_profiling – Enable performance profiling (default: False)

_start_workers()[source]

Start worker threads for processing calculations.

_worker_loop()[source]

Worker thread main loop.

_process_calculation(index, prioritized_obj, viewport_rect, callback=None)[source]

Process a single layout calculation.

Parameters:
  • index – Object index

  • prioritized_obj – Prioritized object to calculate layout for

  • viewport_rect – Current viewport rectangle

  • callback – Optional callback function for completion

submit_batch(batch, viewport_rect, callback=None)[source]

Submit a batch of objects for parallel layout calculation.

Parameters:
  • batch – List of prioritized objects

  • viewport_rect – Current viewport rectangle

  • callback – Optional callback for individual completions

Returns:

Dictionary mapping object indices to calculation results

wait_for_batch(batch_indices, timeout_ms=None)[source]

Wait for a batch of calculations to complete.

Parameters:
  • batch_indices – List of object indices to wait for

  • timeout_ms – Timeout in milliseconds (default: batch_timeout_ms)

Returns:

Dictionary mapping object indices to calculation results

get_result(index)[source]

Get calculation result for a specific object.

Parameters:

index – Object index

Returns:

CalculationResult if available, None otherwise

invalidate_cache(index=None)[source]

Invalidate cache for specific object or all objects.

Parameters:

index – Object index to invalidate, or None for all objects

get_statistics()[source]

Get statistics about calculator performance.

Returns:

Dictionary with statistics

shutdown(wait=True)[source]

Shutdown the calculator and worker threads.

Parameters:

wait – Whether to wait for pending calculations to complete

calculate_layout_sync(prioritized_obj, viewport_rect)[source]

Calculate layout synchronously (for testing/debugging).

Parameters:
  • prioritized_obj – Prioritized object to calculate layout for

  • viewport_rect – Current viewport rectangle

Returns:

CalculationResult

See Also

  • zooui/objects/mediaobjects/mediaobject - Base media object class

  • zooui/objects/mediaobjects/mediaobjectsutils/string/textlayout - Text layout utilities