无阻塞subprocess.call - 重访
问题描述:
我发现这个线程已超过2岁。我想问一个新的问题,所以我可以得到更多的关注无阻塞subprocess.call - 重访
我的问题:
我也有同样的情况@DavidJB,因为他在他的评论一个描述了早期的岗位
感谢,这似乎工作,但是当我在slave.py中包含一个While循环似乎卡住,并没有执行任何东西在循环(即使有一个timer.sleep()函数..? - DavidJB四月17 '13 at 23:59
任何人有任何更新?
我希望有一个while循环的子节点(slave.py)继续运行,父节点(main.py)不要等待子节点结束。家长应该继续工作。
这是我的主要和孩子的样子。
main.py
...
proc = Popen('child.py', stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=True)
out, err = proc.communicate()
...
在主,我想spwan关闭child.py,然后去做其他的东西产卵它关闭
child.py
while True:
file = open('/mnt/flash/child.txt', 'aw')
file.write(datetime.now().strftime('%Y-%m-%d %H:%M:%S') + "\t\topened the file now!!\thi\n" )
time.sleep(5)
...
<break>
file.close()
后孩子一旦开始写入文件,当前时间每5秒钟除非某些事件将其从无限循环中分离出来
答
如果你去执行其他的Python脚本,以便尝试这种
main.py
import subprocess
for insert, (list) in enumerate(list, start=1):
l = [list]
subprocess.call(["python", "slave.py", '%s' % l])
调用subprocess.Popen创建就像如果你运行'在shell蟒蛇slave.py'一个新的进程。所以除非你使用eg,否则孩子和父母之间不会有直接的联系。标准输入=管道。 AFAIK没有任何东西可以阻止孩子。 – cg909
评论是伪造的。 while循环本身不会挂起子进程(这是一个单独的进程)。你可以[创建一个最小的代码示例来演示这个问题](http://*.com/help/mcve)?描述你期望发生什么以及发生什么(逐步)。 – jfs
我已根据您的要求编辑了该问题。 @ J.F。塞巴斯蒂安 –