首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Python子流程在named_pipe中不能像预期的那样工作?

Python子流程在named_pipe中不能像预期的那样工作的原因是因为named_pipe是一种命名管道,用于进程间通信。而Python的子流程(subprocess)模块用于创建和控制子进程,但它默认使用的是匿名管道(anonymous pipe)。

在named_pipe中,子进程无法直接访问父进程创建的命名管道。因此,如果在Python中使用子流程模块创建子进程,并尝试在named_pipe中进行通信,将无法成功。

要在named_pipe中实现子进程通信,可以使用其他编程语言或工具来创建子进程,并使用相应的命名管道API进行通信。例如,在C语言中可以使用mkfifo函数创建命名管道,并使用open、read和write等函数进行读写操作。

总结起来,Python子流程在named_pipe中不能像预期的那样工作是因为Python的子流程模块默认使用的是匿名管道,而无法直接访问命名管道。如果需要在named_pipe中实现子进程通信,可以考虑使用其他编程语言或工具来实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Linux修炼】15.进程间通信

如何理解命令行管道 2.5 进程控制多个子进程 三.命名管道 3.1 预备工作 3.2 命令行命名管道 3.3 命名管道 进程间通信 之前提到过,进程之间具有独立性。...1.2 为什么要有通信 之前所写C/C++代码,都是单进程。但实际上,我们完成某种业务内容时是需要多进程协同。...2.3 管道特点 读写特征: 上述代码我们进程sleep(1),实际上这使得父进程read时暂停1秒,即在read(读)时阻塞;那如果把子进程sleep去掉,父进程sleep(n),那么子进程缓冲区就会被写满...,举个例子:如果发送是1,就让进程下载,发送是2,就让进程做特定计算……;那为什么可以这样随意控制进程是否运行呢?...左侧将打印信息重定向到named_pipe管道文件,右侧cat作为进程再把named_pipe管道数据读了进来,通过这种方式,就完成了命令行式进程间通信。但发现管道文件大小仍为0。

47700
  • 进程间通信--管道

    让系统调用将这个临时缓冲区数据写到管道文件 snprintf(buffer,sizeof(buffer),"%d:进程第(%d)次向父进程写入:%s",getpid(...1.不关闭写端情况下一直不向管道文件写入,那么读端就会阻塞式读取(一定要读取到数据才会往下继续执行) 2.不关闭读端情况,一直向管道写但不读取,文件缓冲区满以后会一直等待读端来读取 3....用vector存储 assert(task);//不能为空 //将任务函数插入到指针数组 task->push_back(downloadTask); task->push_back...解决办法: 建立一个vector数组,每当我创建一个管道文件,就将这个管道文件写端描述符插入到这个vector数组,然后进程关闭这个文件描述符对应文件。...因为进程具有独立性,所以进程关闭并不会影响父进程。这样就又回到只有一个进程指向管道文件写端,一个进程指向管道文件读端,这时当我关闭父进程写端时,进程就可以通过读到0而退出了。

    20530

    Python最令人困惑操作符

    这是Python两种不同类型可迭代一维数组,它们之间只有一个键差。元组是不可变结构,这意味着一旦定义,元组就不能被更改。列表当然是可变,它包含了append()这样方法。...然而,Python仍然具有试图改变不可变类型时可能会出现抛出。考虑到这个功能,我们可以预期下面的代码会显示一个错误,说明元组是不可变。...letters[0] += "Q" 正如预期那样,我们得到了另一个类型错误,因为元组一旦创建就不能更改。但是,只有在对数据结构调用操作符后才会抛出此类型错误。...这与大多数语言不同,后者通常包括语言本身没有结构化基础数据类型。 信不信由你,这种类型错误和元组可变性是Python特性,而不是bug。...这就是为什么正等号这么棒部分原因! 仔细看看 04 现在我们已经知道了加号等于运算符有多奇怪,为了更好地理解其用法怪异之处,让我们来看看该运算符实际上是如何工作

    65310

    进程间通信(一)管道

    ④进程控制:有些进程希望完全控制另一个进程执行(如Debug进程),此时控制进程希望能够拦截另一个进程所有陷入和异常,并能够及时知道它状态改变 为什么要通信?...调用pipe时候,操作系统会打开对于文件, 得到对应进程文件描述符表特点位置,比如3,4,然后把3和4填充到fd[2]。...,进程是没有输出代码,是父进程输出。...那么如果我们把写入间隔改成5秒,结果会是怎么样?结果会是读取速度会变慢! 那么,进程不进行写入那5秒之间,父进程干啥子?父进程阻塞状态!...那么此时,因为管道是有空间大小,写满时候,就不能写啦,再写的话可能会把原来内容给覆盖了,此时写端会阻塞,等待读端提取!

    49220

    【Linux】进程间通信上 (1.5万字详解)

    问:管道进行数据传输为什么是单项? 答:这种通信方式之所以被命名为管道,是因为它符合现实生活管道进行单向资源传输特点。...现在我们让进程一直写,父进程每隔5秒钟读一次,我们还是使用上面的测试代码: 综合打印结果,我们发现:读端从管道读取数据时,当管道数据足够多时, 读端会将缓冲区读满。...同一个文件struct file结构体内部数据应该是一样,既然如此,操作系统为什么还要花费资源去维护另外一块空间呢? 如图所示: 问:为什么不进行文件数据刷新工作?...,但是实际工作,使用次数缺很少,具体原因我会在讲解说明。...然后张三就早早包间里等着李四,李四找到了对应包间,一看张三等着呢。两人见面习惯性含蓄了一番,然后就吃了起来。 我问:假如张三定是6号包间,李四会问张三为什么要定6号包间吗?

    15110

    Python数据处理(列表)——(二)

    Q5:既然Python能给我们把数字排好序,那么字符也能不能数字那样排好序呢? Q5.1 但是有时我们只要临时修改以下排列顺序,要该怎么做呢?...x*2#这一行实现了加倍魔法,并将结果返回到了list里 print(list)  这样程序就如我们预期那样运行 Q4:enumerate 魔力能改变列表数据值,但是有的时候我们遇到一串比较杂乱无序数据...就给我们排好序了 Q5:既然Python能给我们把数字排好序,那么字符也能不能数字那样排好序呢?  ...])#也可以加入列表 第三个代码加入是子代码,但是添加的确是列表, 而且append使用也有限制,一次只能增加一个数据。...] list1 = [11,22,33,44,'啊'] list.extend(list1) print(list) 这样程序就能如我们预期那样,把两个列表合并了 Q7:但是前面两种插入方法还是有局限性

    1.3K10

    一个神奇需求:doc批量转docx,1行Python代码实现

    大家好,这里是程序员晚枫,今天给大家分享一个Python自动化办公知识:1行代码,批量给把doc文档转为docx格式。...1、上代码下载Python自动化办公专用库:python-office,下载命令如下。...所以,建议大家条件允许情况下,上面的代码那样,使用国外源来下载第三方库,才是最新版~# pip install python-office 一定要成功哦~import officeoffice.word.docx2doc...input_path, output_path) 2、使用说明有以下几点使用技巧:input_path:可以填单个文件,也可以填一个路径,会自动搜索路径下所有pdf文件,包括文件夹里...待开发功能:有些朋友想根据文件名筛选pdf文档,或者更高阶想通过正则来筛选。请点赞本文后,留言区告诉我~开发这个功能过程我一直在想:为什么不能直接改后缀名?求解释!----

    2.7K10

    Python多任务:多线程和多进程

    python多任务其实用了很久了,因为刚开始写代码时候总是看网上说高并发、异步之类,就觉得很高大上,所以刻意地去学过,后来实际开发工作有过为了使用而使用,也有过真正因为性能问题而必须要使用。...## 多线程资源竞争和线程锁 使用多线程时候经常会遇到资源竞争问题,比如当多个子线程同时对一个变量进行计算,如果不加控制,最终结果很可能就不是预期。...使用线程池有两个好处: 降低性能消耗 创建线程这个动作会消耗一定资源,上面那样每次需要时候都创建一个新线程,如果创建很多个子线程的话对性能有一定影响 代码简单 线程池代码实现上相对简单一点...个人感觉可以优先考虑使用map方法,如果map不能满足需求考虑使用submit。..., 如果从中间某一步就结束的话,后面三情况对比结果可能就不是预期那样 """ if n < 2: return False if n == 2:

    9310

    《赢》第17章 晋升

    第17章 晋升 要想获得晋升,有一个要和一个不要 要交出动人、远远超出预期业绩;机遇来临时候,要敢于把自己工作责任扩展到预期范围之外 不要麻烦你老板动用政治资本来帮助你 令别人叹服力量...树立新观念、采纳新流程,那不但会提高你自己业绩,还会对你所在部门甚至整个公司业绩做出巨大贡献。改变自己工作方式,让你周围的人都能干得更出色 ,让老板更有面子。...如果想表现出一种能让人接受个性,想让你老板更轻松一些,那就要开放一点,有话直说 四个人和一个不要 四个要 处理下下属关系时,要对待老板那样认真 要在公司主要项目或者新项目上早点做出成绩 ,...如果你太把自己当回事儿了 没有乐观精神,你或许也会成功——如果其他因素都恰到好处的话,但为什么非要那样呢? 不要惧怕挫折 你会感觉很糟糕,甚至苦涩和愤怒。...在工作,你或许会多次更换公司,甚至职业,但有些事情是你可以做到,这对保证自己提升有益,包括交出超出别人预期业绩,拓展自己工作范围,不要劳驾老板动用政治资本来保护你,认真管理好自己下属,勇敢承担能获得大家关注业务

    68710

    PT2 Export - 用于PyTorch全图捕获机制

    这是建立Torch Compile技术突破基础上一项工作,不再仅仅是程序运行时进行即时编译,而是完全提前进行。...简单地说,因为它经常是必需。Tosh.compile通常会与Python运行时进行很多往返交互。当你调用一个函数时,我们会获取字节码然后一个图中进行编译。...但是如果我们遇到无法编译东西,通常会退回到Python运行时,然后回来继续编译,然后获取另一个图。 为什么我们需要Export?...这部分是因为追踪编译器工作方式,如控制流。我们只会通过您代码走一条可能路径,如果不清楚应该选择哪条路径,我们实际上会发出警告。因此,如果您想捕捉代码更多路径,您必须使用特殊控制流程运算符。...为了指导您,我们建立了一个名为ExportDB示例数据库,希望能够帮助您。随时间变化逐渐增加。这些示例包含了一些被支持和不被支持用例,一些预期会正常工作预期不会正常工作事情。

    15210

    如何基于DataX做增量数据同步?

    DataXJob启动后,会根据不同源端切分策略,将Job切分成多个小Task(任务),以便于并发执行。Task便是DataX作业最小单元,每一个Task都会负责一部分数据同步工作。...4.执行同步 执行同步脚本: python /usr/local/datax/bin/datax.py /usr/local/datax/script/xxx.json 但是有个问题,该命令是同步,执行过程需要窗口一直活跃...,并且客户端不能断开,否则任务会终止,由于执行日志是控制台输出,执行完成后也无法查看执行日志,所以我们需要换成命令非挂起执行,并且输出执行日志到指定目录,用以下命令替换: nohup python /usr...五、关于DataX高可用 Datax本身是一个离线同步工具,具备天然单机性,那么如何保证微服务或者分布式调度那样保证高可用呢?...当然我们可以考虑xxl-job调度实现那样,执行器集群部署时,会把节点都注册到admin,然后任务触发时会根据策略选址执行器执行,如果报错或者执行失败会换一台执行,同样执行Datax同步命令也可以通过这种方式实现

    4.4K10

    如何通过学校系统漏洞注册到 @edu.cn 邮箱账号?

    不过一部电影所说那样“没有绝对安全系统”,有时候如果多动一下脑子并不需要“进谷歌,找注入;没注入,就旁注;没旁注,用Oday... ...”等一些繁琐工作就可以达到目的。...开始 我们学校官网上有一个邮箱服务入口: [邮箱服务] 点进去之后如下图所示: [显示] 不过这里仅仅是留给老师申请和更改密码入口!当我试图注册时候就给出了下图中不能注册提示。...打开链接之后预期结果一样,突然多出来了好几个系统入口: [系统] 最后面出现了【邮箱注册】,我也不确定通过这个链接是否能够注册。...保持好奇心,从每次失败经历总会学到一些东西,更重要是过程。 历史文章 【坦白说】如何确定对方身份? 【百度云盘】不开会员也可高速下载资源 如何用 Python 实现微信消息防撤回?...为什么局域网IP普遍是192.168开头? 我是如何获取到全校学生证件照? 如何制作一个钓鱼网站? 阅读更多文章请关注微信公众号:Worldhello或者用微信扫描下方二维码!

    4.4K20

    【阅读笔记】数据分析思维:分析方法和业务知识

    :用户会告诉其他人吗 漏斗分析方法 漏斗分析方法 参考书籍 首页 分析方法指导下才能知道如何使用工具(Excel、SQL或者Python等)去分析数据,解决业务问题。...工作或者面试,会经常听到分析思维、分析思路、分析方法。这三个词语有什么关系呢?其实简单来说,他们都是只分析方法。因为分析方法是将零散想法整理成有条理分析思路。...这是因为复杂商业问题不会只有一个原因,而是由多个原因引起,例如销售为什么下降,这可能是由多个原因导致,这时候就需要运用其他分析方法 逻辑树分析方法 逻辑树分析方法是把复杂问题拆解成若干个简单问题...,然后树枝那样逐步展开。...解决问题过程,相关分析可以帮助我们扩大思路,将视野从一种数据扩大到多种数据。 相关分析,通俗易懂。 如何使用: 图形:散点图 两种数据之间有多大程度相关? 相关系数 相关系数作用是?

    93510

    Python 数据库Connectio

    Python 数据库图解流程 ? Connection、Cursor比喻 ? Connection()参数列表 host,连接数据库服务器主机名,默认为本地主机(localhost)。...user,连接数据库用户名,默认为当前用户。 passwd,连接密码,没有默认值。 db,连接数据库名,没有默认值。 conv,将文字映射到Python类型字典。...named_pipewindows,与一个命名管道相连接。 init_command,一旦连接建立,就为数据库服务器指定一条语句来运行。...read_default_file,使用指定MySQL配置文件。 read_default_group,读取默认组。 unix_socket,unix,连接使用套接字,默认使用TCP。...连接对象db.cursor([cursorClass])方法返回一个指针对象,用于访问和操作数据库数据。

    40910

    靠默契保证私有制:Python 私有

    大部分面向对象编程语言中,对象可以设置其变量和方法为私有。私有变量和方法只能自己使用,即使其对象都不能访问。大部分编程语言中私有制,和现实生活私有制一样,也是有强制力保证。...但并不是所有编程语言都是这样Python 就是其中一朵奇葩。Python 私有制是由默契保证。 1....Python 私有制 我们知道 Python 是一门很随意编程语言,并没有由语言提供权限控制机制。...__age 对于 Python 可读不可写变量,我们需要注意有两点和其他语言不一样。第一点是 Python 提供了 property 修饰符,可以让函数看起了变量,但最好不用。...4.总结 试图反映世界万物编程语言也有私有的概念。大部分面向对象编程语言中,对象可以设置其变量和方法为私有。私有变量和方法只能自己使用,即使其对象都不能访问。

    67880

    Python 位操作符(Bitwise)

    操作位:很多时候,嵌入式系统上工作时,您需要操作某些位。 例如,序列111011,如果您想知道具有0位,则可以使用按位运算符(我们将在稍后介绍如何实现)进行操作。...到现在为止,您已经对我们为什么需要按位运算符有了很好了解。随后,让我们继续逐位运算符类型。 不同Python按位运算符 Python提供了一些有用运算符来执行按位运算。...此外,前缀0b表示我们引用是二进制值,而不是十进制100和101。 正如预期那样,我们得到结果为4。您必须注意,即使我们以二进制形式执行计算,结果仍然以十进制表示。...但是Python这样编程中使用时,此运算符用于返回number补码。 因此,〜10 = -11而不是01。此外,必须具有1补码和2补码先验知识,才能在这里理解此运算符作用。...执行下面给出代码,以结果中看到相同结果: 打印(0b0001 << 2) 如预期那样,1 << 2答案是4。

    1.6K10

    受用一生高效 PyCharm 使用技巧(二)

    神一样调试技巧 假如我们一个爬虫项目中,会使用到 正则表达式 来匹配我们想要抓取内容。正则这种东西,有几个人能够一步到位呢,通常都需要经过很多次调试才能按预期匹配。...(上面这个例子可能不太贴切,毕竟是有很多种方法实现不用重新发请求,只是列举了一种很笨拙且低效调试过程,你看看就好了) 而我们在这几十次调试,向同一网站发起请求都是没有意义重复工作。...如果在 Pycharm 可以 IPython Shell 和 Jupyter Notebook 那样,可以记住运行后所有的变量信息,可以不需要重新运行项目或脚本,只需稍微调整下我们代码,直接就可以进行正则调试...假如我调试如下几行简单代码。第 3 行处打了个断点。然后点击图示位置 Show Python Prompt 按钮。 ?...假设在命令行,运行脚本命令是这样 python main.py init --local 对于刚使用 Pycharm 同学,可能并不知道 Pycharm 也是可以指定参数。点击下图位置 ?

    58220

    受用一生高效 PyCharm 使用技巧(二)

    神一样调试技巧 假如我们一个爬虫项目中,会使用到 正则表达式 来匹配我们想要抓取内容。正则这种东西,有几个人能够一步到位呢,通常都需要经过很多次调试才能按预期匹配。...(上面这个例子可能不太贴切,毕竟是有很多种方法实现不用重新发请求,只是列举了一种很笨拙且低效调试过程,你看看就好了) 而我们在这几十次调试,向同一网站发起请求都是没有意义重复工作。...如果在 Pycharm 可以 IPython Shell 和 Jupyter Notebook 那样,可以记住运行后所有的变量信息,可以不需要重新运行项目或脚本,只需稍微调整下我们代码,直接就可以进行正则调试...假如我调试如下几行简单代码。第 3 行处打了个断点。然后点击图示位置 Show Python Prompt 按钮。 ?...假设在命令行,运行脚本命令是这样 python main.py init --local 对于刚使用 Pycharm 同学,可能并不知道 Pycharm 也是可以指定参数。点击下图位置 ?

    84520
    领券