关于如何做这些事情,有很多例子可以找到:
1)同一程序中不同进程之间的通信。在
2)通过网络在客户机/服务器之间进行通信
然而,这个问题在我看过的任何地方都没有很好的例子:
我觉得我已经接近答案很多次了,但从来没有创造出一个有效的例子。在
其他隐含要求:
例如,当读者使用:
pipein = open(pipe_name, 'r')
while program.KeepRunning:
action = pipein.readline()[:-1]
program.processLine(line)
time.sleep(1)
作者使用:
^{pr2}$如http://www.python-course.eu/pipes.php所建议 读取器陷入一个无限循环中,读取空字符串。在
有趣的是,将if(action == 'enable'): longFunction()
添加到program.processLine
函数中会导致longFunction
中的部分代码在永远无法读取空行之前被执行。在
另一方面,所有使用更现代、更低级的subprocess
模块的示例只涉及多线程应用程序,而不是多个应用程序。其他实现包括套接字和网络。在
当我尝试使用套接字时,这会导致泛型的“出了问题”类型错误,并有许多可能的原因Error 111: “connection refused”
显示“有时”。作为python代码的一部分,在接收到某些命令时会实际修改网络配置(例如,它使用各种参数调用诸如ip
、tc
和{
那是故意的行为。查看this answer中类似的问题和FIFO行为的概述。与您的问题相关的部分是:
file.readline()
docs表示''
(空字符串)表示{就这样。在无限循环中,每次尝试读取时都会得到一个空字符串,表示没有更多的写入程序连接。在
没有什么可以阻止您使用命名管道来解决您的任务。最简单的方法就是在没有作家的情况下睡一段时间。以下是工作示例:
^{pr2}$注意事项:
os.open()
,这是一个低级函数。可以使用open()
与命名管道交互。在Listening for actions...
。作家没有读者也一样。在相关问题 更多 >
编程相关推荐