将stderr与stdout结合使用时,为什么2>&1需要在|(管道)之前但在> myfile(重定向到文件)之后呢?
要将stderr重定向到stdout以获取文件输出:
echo > myfile 2>&1
Run Code Online (Sandbox Code Playgroud)
要将stderr重定向到管道的stdout:
echo 2>&1 | less
Run Code Online (Sandbox Code Playgroud)
我的假设是我可以这样做:
echo | less 2>&1
Run Code Online (Sandbox Code Playgroud)
它会起作用,但事实并非如此.为什么不?
我想知道我们是否可以设置一个"可选"步骤sklearn.pipeline.例如,对于分类问题,我可能想要在ExtraTreesClassifier没有PCA转换的情况下尝试使用AND .在实践中,它可能是一个带有额外参数的管道,指定PCA步骤的切换,以便我可以通过GridSearch等进行优化.我没有在sklearn源中看到这样的实现,但是有没有解决方法?
此外,由于流水线中后续步骤的可能参数值可能取决于前一步骤中的参数(例如,ExtraTreesClassifier.max_features依赖的有效值PCA.n_components),是否可以在sklearn.pipeline和中指定这样的条件依赖性sklearn.grid_search.
谢谢!
一旦有新版本,Renovate 就会更新软件包。但 renovate 还会为每次更新创建一个单独的 PR/分支。因此,如果为我的 5 个包 renovate 发布的新版本将创建 5 个分支。\n这会导致 5 个管道,其中 1 个 PR 被合并,其他 4 个将重新设置基础并再次运行管道。因此,每次合并时将运行 15 个 PR 管道 + 分支管道main。
\n因此总共将运行 19 个管道。
是否可以将 \xe2\x80\x93 假设所有次要更新和补丁更新 \xe2\x80\x93 合并到一个分支和 PR 中,以避免出现大量 PR?
\n我发现的唯一的事情是prConcurrentLimit它避免了每次合并时 PR 管道的变基和重新运行。但这也会触发 10 个管道。
如果我可以将所有内容组合在一起,则只有 1 个 PR 管道和 1 个main分支管道。所以总共有2条管道。那将是真棒。
以下是我在python子进程模块文档中可以阅读的内容:
Replacing shell pipeline
output=`dmesg | grep hda`
==>
p1 = Popen(["dmesg"], stdout=PIPE)
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
output = p2.communicate()[0]
The p1.stdout.close() call after starting the p2 is important in order for p1
to receive a SIGPIPE if p2 exits before p1.
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么在创建p2之后我们必须关闭p1.stdout.什么时候完全执行p1.stdout.close()?当p2永远不会结束时会发生什么?当p1或p2结束时会发生什么?
我想做这样的事情:
<statement> | <filter1> | <filter2> if <condition> | <filter3> | <filter4> | <filter5>
Run Code Online (Sandbox Code Playgroud)
<statement>的结果通过<filter1>运行,然后只有满足<condition>才会运行<filter2>,然后通过剩余的过滤器运行,无论是否应用了<filter2>.这相当于:
if (<condition>) {
<statement> | <filter1> | <filter2> | <filter3> | <filter4> | <filter5>
} else {
<statement> | <filter1> | <filter3> | <filter4> | <filter5>
}
Run Code Online (Sandbox Code Playgroud)
这在仅在调用某个开关时将给定过滤器应用于结果集的函数中非常有用.如果条件过滤器在长流水线中早期发生,则使用外部if块编写它会导致大量重复代码,尤其是在存在多个条件过滤器的情况下.
这是一个例子.以下函数显示给定帐户在给定目录子树中Show-AccountPerms \\SERVERX\Marketing DOMAIN\jdoe具有的权限(例如,在\ SERVERX\Marketing下的目录树中提供用户DOMAIN\jdoe具有的权限报告).
function Show-AccountPerms {
param (
[parameter(mandatory = $true)]$rootdir,
[parameter(mandatory = $true)]$account,
[switch]$files,
[switch]$inherited
)
gci -r $rootdir `
|where {$_.psiscontainer} `
|foreach {
$dir = $_.fullname
(get-acl $_.pspath).access `
| where …Run Code Online (Sandbox Code Playgroud) 背景:我目前正在使用Python代码为大型天文成像系统的数据减少管道.主要管道类通过许多离散处理"阶段"传递实验数据.
这些阶段是用单独的.py文件编写的,它们构成了一个包.在运行时生成可用阶段列表,以便用户可以选择运行数据的阶段.此方法的目的是允许用户在将来创建其他阶段.
问题:所有管道配置参数和数据结构(当前)位于主管道类中.有没有一种简单的方法可以在运行时导入的阶段中访问它们?
我目前的最佳尝试似乎"错误"并且有点原始,因为它使用循环导入和类变量.是否有一种方法可以让管道实例将引用传递给它自己作为它调用的每个阶段的参数?
这是我第一次编写一个大型python项目,而我缺乏设计知识.
任何帮助将不胜感激.
我正在尝试找到在Node.js中过早终止一系列管道流(管道)的正确方法:有时我想在流完成之前优雅地中止流.具体来说,我正在处理大部分objectMode: true和非原生的并行流,但这并不重要.
问题是当我unpipe在管道中时,数据保留在每个流的缓冲区中并被drain编辑.对于大多数中间流(例如/ ),这可能没问题,但是最后一个仍然流向其写目标(例如文件或数据库或套接字或w/e).如果缓冲区包含数百或数千个块需要花费大量时间来消耗,则这可能是有问题的.我希望它立即停止,即不要排水; 为什么浪费周期和内存对数据无关紧要?ReadableTransformWritable
根据我去的路线,我收到"写后结束"错误,或者当流找不到现有管道时发生异常.
什么是优雅地杀死表单中的流管道的正确方法a.pipe(b).pipe(c).pipe(z)?
我提出的解决方案是3步:
unpipe 管道中的每个流以相反的顺序排列Writableend 每个实现的流 Writable一些伪代码说明了整个过程:
var pipeline = [ // define the pipeline
readStream,
transformStream0,
transformStream1,
writeStream
];
// build and start the pipeline
var tmpBuildStream;
pipeline.forEach(function(stream) {
if ( !tmpBuildStream ) {
tmpBuildStream = stream;
continue;
}
tmpBuildStream = lastStream.pipe(stream);
});
// sleep, timeout, event, etc...
// tear down the …Run Code Online (Sandbox Code Playgroud) 考虑以下:
function OutputArray{
$l = @(,(10,20))
$l
}
(OutputArray) -is [collections.ienumerable]
# C:\ PS> True
(OutputArray).Count
# C:\ PS> 2
Run Code Online (Sandbox Code Playgroud)
$l 当它进入管道时被"展开". 这个答案表明powershell展开了所有集合. 哈希表是一个集合.但是,哈希表当然不受管道的影响:
function OutputHashtable{
$h = @{nested=@{prop1=10;prop2=20}}
$h
}
(OutputHashtable) -is [collections.ienumerable]
# C:\ PS> True
(OutputHashtable).Count
# C:\ PS> 1
Run Code Online (Sandbox Code Playgroud)
这条评论表明,所有IEnumerable都转换为对象数组.但是,数组和散列表都是不可数的:
@(,(10,20)) -is [collections.ienumerable]
#True
@{nested=@{prop1=10;prop2=20}} -is [collections.ienumerable]
#True
Run Code Online (Sandbox Code Playgroud)
究竟,PowerShell将对象"展开"到管道中的条件是什么?
目前我已经使用def函数成功定义了一个自定义内核函数(预先计算内核矩阵),现在我使用GridSearchCV函数来获取最佳参数.
因此,在自定义内核函数中,总共有2个参数将被调整(即下例中的gamm和sea_gamma),而且对于SVR模型,还必须调整cost c参数.但到目前为止,我可以使用GridSearchCV 调整成本c参数 - >请参考下面的第一部分:示例.
我搜索了一些类似的解决方案,例如:
是否可以在scikit-learn中使用网格搜索调整参数来定制内核?
它说:" 实现这一目标的一种方法是使用Pipeline,SVC(kernel ='precomputed')并将自定义内核函数包装为sklearn估计器(BaseEstimator和TransformerMixin的子类).)"但这仍然与我的情况不同然而,问题是,我尝试基于此解决方案解决问题,但到目前为止它没有打印任何输出,甚至是任何错误. - >请参考第二部分:管道解决方案.
第一部分:示例 - >我在网格搜索中的原始自定义内核和评分方法是:
import numpy as np
import pandas as pd
import sklearn.svm as svm
from sklearn import preprocessing,svm, datasets
from sklearn.preprocessing import StandardScaler, MaxAbsScaler
from sklearn.metrics.pairwise import rbf_kernel
from sklearn.grid_search import GridSearchCV
from sklearn.svm import SVR
from sklearn.pipeline import Pipeline
from sklearn.metrics.scorer import make_scorer
# weighting the vectors
def distance_scale(X,Y):
K = np.zeros((X.shape[0],Y.shape[0]))
gamma_sea =192
for i in range(X.shape[0]):
for j …Run Code Online (Sandbox Code Playgroud) 目标是让每个人都获得每个失败管道的通知(由他们自行决定).目前,我们任何人都可以在这个项目分支上运行管道,管道的创建者会收到一封电子邮件,其他人都没有.我已经尝试了通知级别设置为watch和custom (with failed pipelines checked)在项目组与没有成功的全球水平.有关通知的帮助页面显示自定义通知级别的失败管道复选框通知管道的作者(这是我遇到的行为).有没有办法让多人收到管道故障的通知?
pipeline ×10
python ×4
pipe ×3
powershell ×2
scikit-learn ×2
shell ×2
bash ×1
collections ×1
conditional ×1
config ×1
filter ×1
gitlab ×1
grid-search ×1
ienumerable ×1
node.js ×1
renovate ×1
stdout ×1
subprocess ×1
svm ×1