首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python函数似乎没有被调用,这怎么可能?

python函数似乎没有被调用,这怎么可能?
EN

Stack Overflow用户
提问于 2022-10-01 06:12:41
回答 1查看 55关注 0票数 0

我有这个脚本,它的目的是用不同的参数调用另一个脚本,并打印输出,就像我自己调用它一样:

代码语言:javascript
复制
import subprocess

def run_this(command):
    print(f"running {command}")
    p = subprocess.Popen(command.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    while True:
        retcode = p.poll()
        line = p.stdout.readline()
        if line:
            yield line
        if retcode is not None:
            print(f"retcode : {retcode}")
            p.stdout.close()
            break

def build_command(pruned_model, prompt):
    return f'python scripts/stable_txt2img.py --ddim_eta 0.0 --n_samples 1 --n_iter 4 --scale 7.0 ' \
              + f'--ddim_steps 50 --ckpt "{pruned_model}" ' \
              + f'--prompt "{prompt}" --seed 6514689'

pruned_model = r"C:\checkout2\Stable-diffusion\checkpoints\last-pruned.ckpt"
prompts = [
    "a person in space",
    "a person on a boat"
]

for prompt in prompts:
    print("iteration")
    command = build_command(pruned_model, prompt)
    run_this(command)

print("done")

然而,产出如下:

代码语言:javascript
复制
iteration
iteration
done

Process finished with exit code 0

这怎麽可能?在run_this()函数的开头有一个打印。

谢谢。

ps :您可以将任何命令传递给run_this(),它将永远不会进入函数。例如,这将永远不会打印“running”

代码语言:javascript
复制
import subprocess

def run_this(command):
    print(f"running {command}")
    p = subprocess.Popen(command.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    while True:
        retcode = p.poll()
        line = p.stdout.readline()
        if line:
            yield line
        if retcode is not None:
            print(f"retcode : {retcode}")
            p.stdout.close()
            break

print("start")
run_this("toto")
print("done")
EN

回答 1

Stack Overflow用户

发布于 2022-10-01 06:25:42

您的run_this是一个生成器函数。打电话实际上不运行任何东西。它只是创建了一个生成器迭代器。迭代器上的迭代将运行代码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73916206

复制
相关文章

相似问题

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