She*_*onH 5 powershell runspace powershell-core
PowerShell 7 引入了一个非常需要的功能来并行运行管道输入。
PowerShell 7的文档没有提供有关如何实现的任何详细信息。
已经利用PoshRSJob
与Invoke-Parallel
之前的模块,我知道,运行空间在传统上认为是在运行PowerShell的工作在PowerShell中并行操作的更有效的方法。我已经阅读了一些混合内容,表明这是现在使用线程而不是运行空间,但找不到任何其他特定内容。
我真的很感激对以下方面的一些技术见解:
发现了 Paul Higinbotham 撰写的这篇精彩的博客文章PowerShell ForEach-Object Parallel Feature。
从这篇博文中我得到了以下要点:
脚本块在称为 PowerShell 运行空间的上下文中运行。运行空间上下文包含所有定义的变量、函数和加载的模块。
如前所述,新的 ForEach-Object -Parallel 功能使用现有的 PowerShell 功能来并发运行脚本块......PowerShell 本身根据其设计和历史记录对脚本如何并发运行施加了条件。脚本必须在运行空间上下文中运行,并且运行空间内一次只能运行一个脚本线程。因此,为了同时运行多个脚本,必须创建多个运行空间。
因此,它确认运行空间是其主要驱动因素,并提供了有关线程安全操作等的更多信息。有关运行空间的任何先前答案或详细信息都与此处相关,因为这是官方标准库中并行操作的运行空间的成熟实现。社区已经完成了面向运行空间的其他实现,但现在不包含任何外部模块依赖项。
感谢Paul对社区做出的杰出贡献!
归档时间: |
|
查看次数: |
2044 次 |
最近记录: |