- Designed for Windows PowerShell 5.1 and PowerShell Core
- Built with PowerShellStandard.Library
- Published at PSGallery only
Add help about error preference, #30.
Fixed #29, WarningVariable
should be populated.
New helper $Pipeline.Lock(script)
for mutually exclusive operations, #25.
It is not designed for usual scenarios because it "breaks" parallel flows.
Input objects may be provided using the parameter InputObject
, #19.
Packaged and published as PSGallery module.
Fixed #12 VerbosePreference
can be any value.
Fixed #10 Tight loop in EndProcessing()
Count
accepts one or two values. One is as usual. Two values limit the number
of required pipelines also taking into account the number of processors. (Too
many pipelines on machines with many cores is not always optimal.)
Corrected the test/demo script Test-ProgressTotal.ps1.
Minor performance tweaks on creation of runspaces.
Fixed duplicated debug, warning, and verbose messages (v1.4.2).
Pipeline runspaces are created with the host used by Split-Pipeline
. As a
result, some host features can be used by pipeline scripts, e.g. Write-Host
and even Write-Progress
, see Test-Progress*.ps1
in the project repository.
If the minimum Load
is less than 1 then the parameter is treated as omitted.
Potentially incompatible change. By default, i.e. when Load
is omitted, the
whole input is collected and split evenly between parallel pipelines. This way
seems to be the most effective in simple cases. In other cases, e.g. on large
or slow input, Load
should be used in order to enable processing of input
parts and specify their limits.
Corrected input item count in Refill
mode in verbose statistics.
Refactoring of ending, closing, and stopping.
Removed the obsolete switch Auto
and pieces of old code.
Reviewed automatic load balancing, made it the default and less aggressive
(potentially incompatible change). The obsolete switch Auto
still exists
but it is ignored. Use the parameter Load
in order to specify part limits.
E.g. -Load N,N
tells to use N items per pipeline, i.e. no load balancing.
In order words: a) Auto
is slightly redundant with Load
; b) not using
Auto
, e.g. forgetting, often causes less effective work. Auto
will be
removed in the next version.
Improved stopping (e.g. by [Ctrl-C]
):
- Fixed some known and some potential issues.
- The
Finally
script should work on stopping.
Amended verbose messages. They are for:
- Each job feed with current data.
- End of processing with end data.
- Summary with totals.
Added processing of StopProcessing()
which is called on [Ctrl-C]
. Note that
stopping is normally not recommended. But in some cases "under construction" it
may help, e.g. #3.
Debug streams of parallel pipelines are processed as well and debug messages are propagated to the main pipeline, just like errors, warnings, and verbose messages.
New parameter ApartmentState
.
Help. Mentioned why and when to use Variable
, Function
, and Module
. Added
the related example.
Minor cosmetic changes in help and code. The API seems to be stabilized and no issues were found for a while. Changed the status from "beta" to "release".
Refactoring and minor improvements.
Revision of parameters and automatic load balancing (mostly simplification). Joined parameters Load and Limit into the single parameter Load (one or two values). Removed parameters Cost (not needed now) and Queue (Load is used in order to limit the queue).
Minor tweaks.
Refilled input makes infinite loops possible in some scenarios. Use the new
parameter Filter
in order to exclude already processed objects and avoid
loops.
New switch Refill
tells to refill the input queue from output. [ref]
objects are intercepted and added to the input queue. Other objects go to
output as usual. See an example in help and Test-Refill.ps1
.
Tweaks in feeding parallel pipelines and automatic tuning of load.
New switch Order
tells to output part results in the same order as input
parts arrive. Thus, although order of processing is not predictable, output
order can be made predictable. This feature open doors for more scenarios.
Added checks for Stopping
in EndProcessing
(faster stop on Ctrl+C
).
Tweaks, including related to PowerShell V3 CTP2.
New switch Auto
is used in order to determine Load values automatically during
processing. Use Verbose
in order to view some related information. Yet another
new parameter Cost
is used together with Auto
; it is introduced rather for
experiments.
This is the first of v0 series (pre-release versions). Cmdlet parameters and behaviour may change.
The cmdlet Split-Pipeline passes simple tests and shows good performance gain in a few practical scenarios.
Failures, errors, warnings, and verbose messages from parallel pipelines are trivial, straightforward, and perhaps not useful enough for troubleshooting.