---
title: "Parallel Processor"
description: "distribute event parsing and transformation workloads across multiple\
  \ cores."
source: "https://github.com/log-10x/modules/tree/main/pipelines/run/units/transform/parallelize/unit.yaml"
icon: "octicons/cpu-24"

---
Transform log/trace events read from [inputs](https://doc.log10x.com/run/input/ "Read events into the pipeline from local and remote sources") into typed [TenXObjects](https://doc.log10x.com/api/js/#TenXObject "Provide structured, reflective access to log/trace events read from input(s).") using multiple cores.

## :material-wrench-outline: Config Files

To configure the Parallel processor unit, [:material-cog: Edit](https://doc.log10x.com/config/app/#module-config "Learn how to edit app and module configurations") these files.  

Below is the default configuration from: [parallelize/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/transform/parallelize/config.yaml "parallelize/config.yaml"){target="\_blank"}.  
  
<div class="edit-options">
    <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/transform/parallelize/config.yaml" target="_blank" rel="noopener noreferrer">
        <span class="twemoji" style="margin-right: 0.3rem;">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
            </svg>
        </span> Edit Online
    </a>
    <button class="md-button tenx-config.yaml0-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml0-dialog">
        <span style="margin-right: 0.3rem;">
            <span class="twemoji">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                </svg>
            </span>
        </span>Edit Locally
    </button>
</div>

<dialog id="config-yaml0-dialog" class="md-dialog md-dialog--editor">
    <div class="editor-dialog-wrapper">
        <div class="editor-dialog-header">
            <span class="editor-dialog-title">Edit config.yaml Locally</span>
            <div class="editor-header-actions">
                <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                </button>
                <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                </button>
                <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                    <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                    <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                </button>
                <span class="header-divider"></span>
                <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                    <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                    <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                </button>
                <span class="header-divider"></span>
                <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml0-dialog')" data-tooltip="Close">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                </button>
            </div>
        </div>
        <div class="editor-dialog-content">
            <div class="yaml-editor-container"></div>
        </div>
        <div class="yaml-editor-statusbar">
            <span class="yaml-editor-status"></span>
        </div>
    </div>
    <!-- Locations Popup -->
    <div class="locations-popup" style="display: none;">
        <div class="locations-popup-content">
            <div class="locations-popup-header">
                <span class="locations-header-label">Download and save to:</span>
                <button class="locations-popup-close" aria-label="Close">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                        <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                    </svg>
                </button>
            </div>
            <ul class="locations-list">
                <li>
                    <span class="location-label">Linux / Docker / macOS
                        <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                        </span>
                    </span>
                    <div class="location-path-row">
                        <code class="default-path location-path" data-tooltip=""
                            data-copy-osx="/etc/log10x/config/run/transform/parallelize/config.yaml"
                            data-copy-nix="/etc/log10x/config/run/transform/parallelize/config.yaml"
                            data-copy-win="C:\log10x\configs/run/transform/parallelize/config.yaml"></code>
                        <button class="copy-btn" data-tooltip="Copy path">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                            </svg>
                        </button>
                    </div>
                </li>
                <li>
                    <span class="location-label">Custom directory
                        <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                        </span>
                    </span>
                    <div class="location-path-row">
                        <code class="location-path" data-tooltip="$TENX_CONFIG/run/transform/parallelize/config.yaml">$TENX_CONFIG/run/transform/parallelize/config.yaml</code>
                        <button class="copy-btn" data-tooltip="Copy path">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                            </svg>
                        </button>
                    </div>
                </li>
                <li>
                    <span class="location-label">Within cloned repo
                        <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                        </span>
                    </span>
                    <div class="location-path-row">
                        <code class="location-path" data-tooltip="./pipelines/run/transform/parallelize/config.yaml">./pipelines/run/transform/parallelize/config.yaml</code>
                        <button class="copy-btn" data-tooltip="Copy path">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                            </svg>
                        </button>
                    </div>
                </li>
            </ul>
            <div class="locations-popup-footer">
                <button class="locations-download-btn" title="Download config file">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                        <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                    </svg>
                    <span>Download</span>
                </button>
            </div>
        </div>
    </div>
</dialog>

<template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAicGFyYWxsZWxFdmVudCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAidGhyZWFkUG9vbFNpemUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk51bWJlciBvZiB0aHJlYWRzIHRvIGFsbG9jYXRlIHRvIHRyYW5zZm9ybSBldmVudHMgaW50byBUZW5YT2JqZWN0cyBjb25jdXJyZW50bHlcblxuQ29udHJvbHMgdGhlIG51bWJlciBvZiB0aHJlYWRzIHRvIGFsbG9jYXRlIHRvIHRyYW5zZm9ybSBldmVudHMgaW50byBUZW5YT2JqZWN0cyBjb25jdXJyZW50bHkuIElmIHRoZSB2YWx1ZSBpcyAtICB8IFNldHRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWxsb2NhdGVkIFRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8IDptYXRlcmlhbC1lcXVhbDogKiowKiogICAgICAgICAgIHwgVHJhbnNmb3JtIGV2ZW50cyBpbnRvIFRlblhPYmplY3RzIHN5bmNocm9ub3VzbHkgdXNpbmcgdGhlaXIgaW5wdXQgc3RyZWFtIGNhbGxpbmcgdGhyZWFkICAgICAgICAgICAgICAgICAgICAgIHwgfCA6bWF0ZXJpYWwtbGVzcy10aGFuOiAqKjEqKiAgICAgICB8IEludGVycHJldGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBjb3JlcyAoZS5nLiwgMC41ID0gdXNlIHVwIHRvIDUwJSBvZiBhdmFpbGFibGUgY29yZXMpIHwgfCA6bWF0ZXJpYWwtZXF1YWw6ICoqMSoqICAgICAgICAgICB8IEFsbG9jYXRlIGEgc2luZ2xlIGRlZGljYXRlZCB0byB0cmFuc2Zvcm0gZXZlbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCA6bWF0ZXJpYWwtZ3JlYXRlci10aGFuOiAqKjEqKiAgICB8IEludGVycHJldGVkIGFzIGEgZml4ZWQgbnVtYmVyIG9mIHRocmVhZHMgKGUuZy4sIDEwID0gMTAgdGhyZWFkcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwiCiAgICAgICAgfSwKICAgICAgICAiYmF0Y2hTaXplIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIHRvIHF1ZXVlIGZvciBjb25jdXJyZW50IHByb2Nlc3NpbmcgYmVmb3JlIGZsdXNoaW5nXG5cblNldHMgdGhlIG51bWJlciBvZiBldmVudHMgdG8gcXVldWUgYmVmb3JlIGZsdXNoaW5nIHRoZW0gdG8gdHJhbnNmb3JtIGludG8gVGVuWE9iamVjdHMuIElmIFt0aHJlYWRQb29sU2l6ZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3BhcmFsbGVsaXplLyNwYXJhbGxlbGV2ZW50dGhyZWFkcG9vbHNpemUpIGlzIDEsIHRoaXMgdmFsdWUgaXMgdW51c2VkLCBhbmQgZXZlbnRzIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIFRlblhPYmplY3Qgc3luY2hyb25vdXNseSAgdG8gdGhlaXIgY2FsbGluZyBpbnB1dCdzIHRocmVhZC4gIElmIDAsIGZsdXNoIHBlbmRpbmcgZXZlbnRzIGFmdGVyIFtmbHVzaEludGVydmFsXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vcGFyYWxsZWxpemUvI3BhcmFsbGVsZXZlbnRmbHVzaGludGVydmFsKSBleHBpcmVzIG9yIHRoZSBzb3VyY2UgaW5wdXQgcmVhY2hlcyBlbmQtb2YtZmlsZS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMTAwMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogMTAwMAogICAgICAgIH0sCiAgICAgICAgImZsdXNoSW50ZXJ2YWwiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gd2FpdCBkdXJhdGlvbiBiZWZvcmUgZmx1c2hpbmcgcXVldWVkIGV2ZW50c1xuXG5TZXRzIGFuIGludGVydmFsIHBlcmlvZCBmb3IgKGUuZy4gJzJzKSBiZWZvcmUgZmx1c2hpbmcgcGVuZGluZyBldmVudHMgdG8gdHJhbnNmb3JtIGludG8gVGVuWE9iamVjdHMuIElmIFt0aHJlYWRQb29sU2l6ZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3BhcmFsbGVsaXplLyNwYXJhbGxlbGV2ZW50dGhyZWFkcG9vbHNpemUpIGlzIDEsIHRoaXMgdmFsdWUgaXMgdW51c2VkLCBhbmQgZXZlbnRzIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIFRlblhPYmplY3Qgc3luY2hyb25vdXNseSAgdG8gdGhlaXIgaW5wdXQgdGhyZWFkLiBJZiAwLCBubyB3YWl0IGZsdXNoIGludGVydmFsIGlzIGFwcGxpZWQuIChEZWZhdWx0OiAycykiLAogICAgICAgICAgImRlZmF1bHQiIDogIjJzIgogICAgICAgIH0sCiAgICAgICAgInByb2Nlc3NpbmdUaW1lb3V0IiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIHdhaXQgZHVyYXRpb24gYmVmb3JlIGRyb3BwaW5nIHVuLXByb2Nlc3NlZCBxdWV1ZWQgZXZlbnRzXG5cblNldHMgYSB0aW1lb3V0IHBlcmlvZCAoZS5nLiwgJzMwcycpLCBhZnRlciB3aGljaCB0byBkcm9wIHF1ZXVlZCBldmVudHMuIFRoaXMgdmFsdWUgcHJvdmlkZXMgYSBiYWNrc3RvcCBmb3Igb3ZlcmZsb3dpbmcgdGhlIGhlYXAgaWYgdGhlIHBpcGVsaW5lIGNhbm5vdCBkZXF1ZXVlICBwZW5kaW5nIGV2ZW50cyB0byB0cmFuc2Zvcm0gaW50byBUZW5YT2JqZWN0LiBJZiAwLCBubyB0aW1lb3V0IGlzIGFwcGxpZWQuIChEZWZhdWx0OiAzMHMpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIzMHMiCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

```yaml
# 🔟❎ 'run' event parallel processing configuration

# Transform log/trace events read from inputs into well-defined TenXObjects using multiple cores.
# To learn more see https://doc.log10x.com/run/transform/parallelize/

# Set the 10x pipeline to 'run'
tenx: run

# =============================== Parallel Options ============================

parallelEvent:
  
  # 'threadPoolSize' specifies the number of threads allocated to transform events into TenXObjects concurrently.
  #  If the value is -
  #  - = 0: transform events into TenXObjects synchronously using their input stream calling thread.
  #  - < 1: interpreted as a percentage of the number of available cores (e.g., 0.5 = use up to 50% of available cores)
  #  - = 1: allocate a single dedicated to transform events.
  #  - > 1: interpreted as a fixed number of threads (e.g., 10 = 10 threads)
  threadPoolSize: "0.5"

  # 'batchSize' specifies the maximum number of events to queue for concurrent processing before flushing.
  #  If 'threadPoolSize' is 1, this value is unused, and events are transformed into TenXObject synchronously 
  #  to their calling input's thread.  If 0, flush pending events after 'flushInterval' expires or the
  #  source input reaches end-of-file.
  batchSize: 1000

  # 'flushInterval'  specifies the maximum wait duration before flushing queued events 
  #  If 'threadPoolSize' is 1, this value is unused, and events are transformed into TenXObject synchronously 
  #  to their input thread. If 0, no wait flush interval is applied. 
  flushInterval: 2s

  # 'processingTimeout' specifies the maximum wait duration before dropping un-processed queued events 
  #  This value provides a backstop for overflowing the heap if the pipeline cannot dequeue 
  #  pending events to transform into TenXObjects. If 0, no timeout is applied.
  processingTimeout: 30s
```

## :material-menu: Options

Specify the options below to [configure](/config "configure") the Parallel processor:

|Name|Description|
|---|---|
|[parallelEventThreadPoolSize](#paralleleventthreadpoolsize "number of threads to allocate to transform events into TenXObjects concurrently")|Number of threads to allocate to transform events into TenXObjects concurrently|
|[parallelEventBatchSize](#paralleleventbatchsize "maximum number of events to queue for concurrent processing before flushing")|Maximum number of events to queue for concurrent processing before flushing|
|[parallelEventFlushInterval](#paralleleventflushinterval "maximum wait duration before flushing queued events")|Maximum wait duration before flushing queued events|
|[parallelEventProcessingTimeout](#paralleleventprocessingtimeout "maximum wait duration before dropping un-processed queued events")|Maximum wait duration before dropping un-processed queued events|

### :material-menu-right-outline:**`parallelEventThreadPoolSize`**

Number of threads to allocate to transform events into TenXObjects concurrently.

|Type|Default|
|---|---|
|String|""|

Controls the number of threads to allocate to transform events into TenXObjects concurrently.

If the value is -

|Setting|Allocated Threads|
|---|---|
|:material-equal: **0**|Transform events into TenXObjects synchronously using their input stream calling thread|
|:material-less-than: **1**|Interpreted as a percentage of the number of available cores (e.g., 0.5 = use up to 50% of available cores)|
|:material-equal: **1**|Allocate a single dedicated to transform events|
|:material-greater-than: **1**|Interpreted as a fixed number of threads (e.g., 10 = 10 threads)|


### :material-menu-right-outline:**`parallelEventBatchSize`**

Maximum number of events to queue for concurrent processing before flushing.

|Type|Default|
|---|---|
|Number|1000.0|

Sets the number of events to queue before flushing them to transform into TenXObjects.
If [threadPoolSize](https://doc.log10x.com/run/transform/parallelize/#paralleleventthreadpoolsize "number of threads to allocate to transform events into TenXObjects concurrently") is 1, this value is unused, and events are transformed into TenXObject synchronously
to their calling input's thread.  If 0, flush pending events after [flushInterval](https://doc.log10x.com/run/transform/parallelize/#paralleleventflushinterval "maximum wait duration before flushing queued events") expires or the
source input reaches end-of-file.


### :material-menu-right-outline:**`parallelEventFlushInterval`**

Maximum wait duration before flushing queued events.

|Type|Default|
|---|---|
|String|2s|

Sets an interval period for (e.g. '2s) before flushing pending events to transform into TenXObjects.
If [threadPoolSize](https://doc.log10x.com/run/transform/parallelize/#paralleleventthreadpoolsize "number of threads to allocate to transform events into TenXObjects concurrently") is 1, this value is unused, and events are transformed into TenXObject synchronously
to their input thread. If 0, no wait flush interval is applied.


### :material-menu-right-outline:**`parallelEventProcessingTimeout`**

Maximum wait duration before dropping un-processed queued events.

|Type|Default|
|---|---|
|String|30s|

Sets a timeout period (e.g., '30s'), after which to drop queued events.
This value provides a backstop for overflowing the heap if the pipeline cannot dequeue
pending events to transform into TenXObject. If 0, no timeout is applied.


<br/>:material-github: This unit is defined in [parallelize/unit.yaml](https://github.com/log-10x/modules/tree/main/pipelines/run/units/transform/parallelize/unit.yaml "parallelize/unit.yaml"){target="\_blank"}.

