【问题标题】:Exiting from gnuplot using Python?使用 Python 退出 gnuplot?
【发布时间】:2015-01-24 02:10:14
【问题描述】:

我有下面的代码来运行 Xyce(模拟平台)来模拟我的网表,然后使用 gnuplot 绘制输出 csv 文件。它工作正常并绘制输出文件,但是,我的命令窗口卡在 gnuplot 窗口中。所以我的问题是此时如何退出 gnuplot 以便正常处理我的代码/脚本。我试图打电话给exit 没有用。我还尝试在后台运行 gnuplot,但没有任何运气。最后我尝试了命令terminate(),但也没有运气。那么,有人可以帮忙吗?

#!/usr/bin/env python

# Plotting Output File

import subprocess
import Gnuplot

subprocess.call(['./Xyce','mscmemory_cell.cir'])
g = Gnuplot.Gnuplot()
g.plot(Gnuplot.File('mscmemory_cell.cir.prn', using=(2,3), with_="lines"))
subprocess.call('gnuplot')

【问题讨论】:

    标签: python gnuplot


    【解决方案1】:

    这里的问题是 subprocess.call() 被阻塞,来自 python 文档:

    https://docs.python.org/2/library/subprocess.html

    我的问题是:你怎么知道你希望程序何时正常继续?

    如果您只想通过 shell 启动 gnuplot 并保持主程序运行,那么您正在挖掘正确的 Python 模块,错误的函数,因为 subprocess.call() 将阻止执行,直到命令完成。我会看 Popen。

    话虽如此,我有点困惑为什么 subprocess.call('gunuplot') 是必要的。从包的 demo.py 看来,调用 Gnuplot.Gnuplot() 应该已经启动了程序的一个实例。不是这样吗?

    【讨论】:

    • 回答第一个问题,我怎么知道我想正常继续?这将取决于 ht 结果本身。例如,我要模拟,以某个步长值绘制,然后接下来是模拟,以另一个步长值绘制,依此类推。关于 subprocess.call() 我必须在代码末尾添加它,否则不会绘制任何内容。那么你有一个关于如何在不使用 subprocess.call() 的情况下使用它的解决方案
    • 至于您是否希望程序继续运行,答案可能是“是”,因为听起来您希望循环运行模拟,直到您的绘图满足视觉要求。如果您想在代码中为手动干预留出空间,我建议您查看 raw_input() 。对于第二部分,您是否尝试过运行包中包含的“demo.py”以查看它是否有效? (gnuplot-py.sourceforge.net) 如果是这样,请尝试找出您的代码可能有什么不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 2021-01-31
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多