首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从父流程中断开子流程循环

从父流程中断开子流程循环
EN

Stack Overflow用户
提问于 2019-08-19 10:48:19
回答 2查看 324关注 0票数 0

这里缺少什么来中断tok1.py中tok2.py中的循环?

我尝试发送一个包含'exit‘的字符串,将发送的值读入my_input并在tok2.py中中断循环。

现在tok2永远在运行。

使用Debian 10 Buster和Python 3.7。

tok1.py:

代码语言:javascript
复制
import sys
import time
import subprocess

command = [sys.executable, 'tok2.py']
proc = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

i=0
while proc.poll() is None:
    if i > 5:
        #Send 'exit' after 5th iteration
        proc.stdin.write(b'exit')

    print('tok1: '  + str(i))

    time.sleep(0.5)
    i=i+1

tok2.py:

代码语言:javascript
复制
import sys
import time

ii=0
my_input =''
while True:
    my_input = sys.stdin.read()

    if my_input == b'exit':
        print('tok2: exiting')
        sys.stdout.flush()
        break

    print('tok2: ' + str(ii))
    sys.stdout.flush()
    ii=ii+1    
    time.sleep(0.5)
EN

回答 2

Stack Overflow用户

发布于 2019-08-19 10:57:05

您可以简单地调用proc.terminate()来终止tok2.py进程,这在逻辑上等同于终止循环。

票数 1
EN

Stack Overflow用户

发布于 2019-08-19 12:59:17

由于下面的答案可能不会被视为“优雅”退出,您还可以设置一个环境变量并检查它。

tok1.py

代码语言:javascript
复制
import sys
import time
import subprocess
import os

command = [sys.executable, 'tok2.py']
proc = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

i=0
while proc.poll() is None:
    if i > 5:
        #Set 'exit' to 'true' after 5th iteration
        os.environ["EXIT"] = "true"
        proc.terminate()

    print('tok1: '  + str(i))

    time.sleep(0.5)
    i=i+1

tok2.py

代码语言:javascript
复制
import sys 
import time
import os

ii=0
my_input ='' 
while True:
    my_input = sys.stdin.read()

    if os.environ['EXIT'] == "true":
        print('tok2: exiting')
        sys.stdout.flush()
        break

    print('tok2: ' + str(ii))
    sys.stdout.flush()
    ii=ii+1
    time.sleep(0.5)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57549945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档