请问tube和pipe到底有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问tube和pipe到底有啥区别相关的知识,希望对你有一定的参考价值。

什么样的管是tube什么样称为pipe

tube和pipe的区别:含义不同,用法不同。

一、含义不同:

1、pipe:n. 管;烟斗;笛 、vi. 吹笛;尖叫 、vt. 用管道输送;尖声唱;用管乐器演奏

2、tube:n. 管;电子管;隧道;电视机 、vt. 使成管状;把…装管;用管输送 、vi. 乘地铁;不及格

二、用法不同:

1、pipe:公称直径15mm以上用pipe。

2、tube:公称直径15mm以下用tube。

语法特征

“动词”,表示人或事物的动作、存在、变化的词,如: 走(walk)、笑(laugh)、有(have)、在(lie)、看(see)、写(write)、飞(fly)、落(land)、保护(protect)、开始(start)、起来(wake)、上去(up)。

动词通常充当句子的谓语或后接描述性补语充当谓语中心,表示主语的动作、存在、变化,或主语对宾语的动作,态度。如“他来了。”("He arrived")(不及物,表示主语的动态)“我们热爱祖国”("We love our motherland")(主语跟着宾语,表示主语对宾语的态度)。

以上内容参考:百度百科-动词

参考技术A

tube和pipe的区别为:读音不同、意思不同、用法不同

一、读音不同

1.tube读音:英 [tjuːb]     美 [tuːb]    

2.pipe读音:英 [paɪp]     美 [paɪp]    

二、意思不同

1.tube意思:

n.(金属、塑料、橡胶等制成的)管,管子;管状物;软管

v.给…装上管子;插管(以助呼吸);用管道运输

2.pipe意思:

n.管子;管道;烟斗;烟袋;管乐器

v.用管道输送;用线路系统传输(或传送);用管乐器演奏(尤指迎宾曲)

三、用法不同

1.tube用法:用作名词 (n.)

例句:

This tube is flexible but tough.

这管子柔软但很坚固。

2.pipe用法:可用作及物动词,也可用作不及物动词。用作及物动词时接名词或代词作宾语。

例句:

The people in the village used to pipe water .

这个村子里的人过去常以管道输送水。

扩展资料

近义词:clay、duct

一、clay读音:英 [kleɪ]   美 [kleɪ]  

释义:n.黏土;陶土;管道;烟斗

用法:接副词 down表示“住嘴,停止往下谈”; 后接副词up表示“开始吹奏”“开始说”。

例句:

The workers are laying pipes under the road.

工人们正在道路下面铺设管道。

二、duct读音:英 [dʌkt]     美 [dʌkt]  

释义:n. 管道;导管;用导管输送

用法:用作名词 (n.)

例句:

One of the air-ducts has become blocked.

有一条输气管堵塞了。

参考技术B tube指高精管,pipe是一般的管,两者的标准和尺寸都不一样,tube是不锈钢的,用于液压的仪表指示等 查看原帖>> 参考技术C tube和pipe都可以翻译成管子,但是在tube一般是指德标的高精度管(eg DIN2391)pipe 则是默认为美标管。当然我们的国标管也可以翻译成pipe.所以在说pipe的时候一定要加上尺寸标准和材料标准。这样才能描述准确 查看原帖>> 参考技术D 补充下2楼的:tube 一般以外径作为尺寸标准,pipe是通径tube 的表面处理要比pipe好很多,通俗点讲,就是tube都很光洁。 查看原帖>>本回答被提问者采纳

subprocess.call() 和 subprocess.Popen() 之间有啥区别使 PIPE 对前者的安全性降低?

【中文标题】subprocess.call() 和 subprocess.Popen() 之间有啥区别使 PIPE 对前者的安全性降低?【英文标题】:What difference between subprocess.call() and subprocess.Popen() makes PIPE less secure for the former?subprocess.call() 和 subprocess.Popen() 之间有什么区别使 PIPE 对前者的安全性降低? 【发布时间】:2015-11-28 15:38:58 【问题描述】:

我已经查看了他们两个的文档。

J.F. 在这里的评论提示了这个问题:Retrieving the output of subprocess.call()

subprocess.call() 的当前 Python 文档对使用 PIPEsubprocess.call() 进行了以下说明:

注意不要在此函数中使用stdout=PIPEstderr=PIPE。如果子进程生成足够的输出到管道以填满操作系统管道缓冲区,则子进程将阻塞,因为管道没有被读取。

Python 2.7 subprocess.call()

注意不要将stdout=PIPEstderr=PIPE 与此功能一起使用,因为这可能会根据子进程输出量而死锁。当您需要管道时,将 Popen 与communicate() 方法一起使用。

Python 2.6 不包含此类警告。

另外,subprocess.call() and subprocess.check_call() 似乎没有办法访问他们的输出,除了使用 stdout=PIPE 和通信():

https://docs.python.org/2.6/library/subprocess.html#convenience-functions

注意,如果要向进程的stdin发送数据,则需要使用stdin=PIPE创建Popen对象。同样,要在结果元组中获得 None 以外的任何内容,您也需要提供 stdout=PIPE 和/或 stderr=PIPE

https://docs.python.org/2.6/library/subprocess.html#subprocess.Popen.communicate

subprocess.call()subprocess.Popen() 之间有什么区别使PIPEsubprocess.call() 的安全性降低?

更具体:为什么subprocess.call()“死锁基于子进程输出量。”,而不是Popen()

【问题讨论】:

// ,后续问题:Python 2 和 Python 3 之间的这种差异有何变化? 你为什么总是用//开始一切? @chepner:嗯,按钮确实说“添加评论”.... :) // , Meta 的后续问题:为什么很少有人对 SO 有幽默感? # @NathanBasanese 也许我是 completely missing the point,但 Python 的注释符号是 #,这与 C++、PHP 和 JavaScript 不同。 【参考方案1】:

call() is just Popen().wait() (± error handling).

您不应将stdout=PIPEcall() 一起使用,因为它不会从管道中读取数据,因此子进程将在填满相应的操作系统管道缓冲区后立即挂起。这是一张显示数据在command1 | command2 shell 管道中如何流动的图片:

不管你的 Python 版本是什么——管道缓冲区(看图片)在你的 Python 进程之外。 Python 3 不使用 C stdio,但它只影响内部缓冲。当内部缓冲区被刷新时,数据进入管道。如果command2(你的父Python程序)没有从管道中读取,那么command1(例如,由call()启动的子进程)将在管道缓冲区满时挂起(pipe_size = fcntl(p.stdout, F_GETPIPE_SZ) ~65K on my Linux 机器(最大值为/proc/sys/fs/pipe-max-size ~1M)。

如果您稍后从管道中读取,则可以使用stdout=PIPE,例如,使用Popen.communicate() 方法。你也可以read from process.stdout (the file object that represents the pipe) directly。

【讨论】:

// ,看起来“管道”比喻效果很好。我不知道我可以这么理解它,以至于可能有一个 stuffed 管道。让我想知道为什么该命令的内核管道缓冲区不只是自动刷新,或者为什么call() 不只是刷新该缓冲区。为了扩展“管道”的比喻,如果管道安装在某个可能无法从管道中出来的地方,为什么不将压力激活连接(电磁阀?)连接到排水槽? (“刷新缓冲区!让代码更强大!”-可能的口号?) // ,我可以猜到为什么有些人称系统程序员为“管道工”。这一切都在管道中。 有一种说法是“自动刷新管道缓冲区”;它被称为:“drop data”实现为stdout=DEVNULL(您可以安全地使用它与call())。 // 啊,不过以后可能就不能再用communicate()输出call()或者check_call()输出了吧? @NathanBasanese: call() 返回孩子的退出状态——它是一个普通整数(在 POSIX 上为 8 位范围,在 Windows 上为 32 位);你不能用它打电话给communicate()。无论如何,子进程已经死了,即使它的 PID 在call() 返回时可能已经被其他进程重用了。 check_call() 只是 call(),如果退出状态不为零,则会引发异常。仅使用 POSIX 调用来实现 shell 管道将是一个有用的练习:pipe、fork、exec、dup2、waitpid,例如 recursive-pipe.c【参考方案2】:

callPopen 都提供了访问命令输出的方法:

使用Popen,您可以使用communicate 或向stdout=... 参数提供文件描述符或文件对象。 使用call,您唯一的选择是将文件描述符或文件对象传递给stdout=... 参数(您不能将communicate 与此参数一起使用)。

现在,stdout=PIPEcall 一起使用时不安全的原因是call 在子进程完成之前不会返回,这意味着所有输出都必须驻留在内存中直到那一刻,并且如果输出量过多,则会填满操作系统管道的缓冲区。

您可以验证上述信息的参考如下:

    根据this,callPopen 的参数相同:

上面显示的参数只是最常见的参数,描述 下面在常用参数中(因此在 缩写签名)。完整的函数签名与 Popen 构造函数的那个​​ - 这个函数传递所有提供的 参数直接通过该接口。

    根据this,stdout 参数的可能值为:

有效值为 PIPE,一个现有的文件描述符(一个正 整数),现有文件对象和无。 PIPE 表示一个新的 应该创建到孩子的管道

【讨论】:

// 呃,第四段中的stdout=POPEN 是指stdout=PIPE,还是POPEN 是一个有价值的文件描述符? // 就像我说的,我确实通读了文档。我读了太多遍了。这让我很难过。另外,关于要点,我知道您必须传递文件描述符或文件对象,并且 PIPE 是一个坏主意,但我只是想知道 为什么 在`subprocess 方法的情况。另外,在第四段中,为什么第一部分出现在便利函数中,而不是出现在 Popen() 中?为什么这种差异会导致“这意味着......”部分? @NathanBasanese 嗨,关于stdout=POPEN 的事情,是的,这是一个错字。现在它被纠正了。关于您的其他疑问:原因是使用Popen() + PIPE,您可以多次调用communicate(),以避免内部操作系统管道的缓冲区被填充,而对于call() + PIPE,您不能调用communicate()一旦你调用call(),你的进程就会阻塞。

以上是关于请问tube和pipe到底有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

流上的 .pipe 和管道有啥区别

subprocess.call() 和 subprocess.Popen() 之间有啥区别使 PIPE 对前者的安全性降低?

subprocess.call() 和 subprocess.Popen() 之间有啥区别使 PIPE 对前者的安全性降低?

java.net.SocketException: Connection reset 和 java.net.SocketException: Broken Pipe 有啥区别?

凡是涉及字符串处理的API函数都有A和W两个版本,那么请问DrawTextA和DrawTextW有啥区别呢?

请问UNITY中Mesh和MeshFilter,MeshRender有啥区别?