8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何在不使用 Python 的 Julia 库的情况下在 Python 中运行交互式 Julia 会话?

SKB_BGPL 1月前

28 0

我想使用 python 向 julia 发送命令,然后获取字符串输出作为返回,然后再次发送命令。即 x=2,然后 x+1 返回 3。这需要通过

我想使用 python 向 julia 发送命令,然后获取字符串输出作为返回,然后再次发送命令。即 x=2 然后 x+1 返回 3 。这需要通过子进程进行交互式会话。我尝试了 subprocess.Popen(["julia", "-e"] 非交互式会话,并检查了 Julia 界面是否正常工作。但是,当我尝试使用以下代码运行 Julia 交互式会话时,它卡住了。

import subprocess

class PersistentJulia:
    def __init__(self):
        # Start Julia in interactive mode
        self.process = subprocess.Popen(
            ["julia", "-i"],  # Interactive mode
            stdin=subprocess.PIPE,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
            text=True,  # Text mode for easier string handling
            bufsize=1,  # Line-buffered
        )

    def run_command(self, command):
        # Send the command to Julia and read the output
        self.process.stdin.write(command + "\n")
        self.process.stdin.flush()

        # Read the output
        output = []
        while True:
            line = self.process.stdout.readline()
            if not line or line.startswith("julia>"):
                break
            output.append(line)

        # Return the collected output as a single string
        return ''.join(output).strip()

    def close(self):
        # Close the Julia process
        self.process.stdin.write("exit()\n")
        self.process.stdin.flush()
        self.process.stdin.close()
        self.process.stdout.close()
        self.process.stderr.close()
        self.process.terminate()
        self.process.wait()

# Example usage
if __name__ == "__main__":
    julia = PersistentJulia()

    # Run some Julia commands
    output1 = julia.run_command('x = 2')
    print("Output 1:", output1)

    output2 = julia.run_command('x + 3')
    print("Output 2:", output2)

    output3 = julia.run_command('println("The value of x is ", x)')
    print("Output 3:", output3)

    # Close the Julia process
    julia.close()

可以 julia = PersistentJulia() 成功运行,但首先要

# Run some Julia commands
output1 = julia.run_command('x = 2')
print("Output 1:", output1)

代码卡住了,无法工作。看上去没问题,但我不确定是哪个部分出了问题。

我不确定子进程是否是正确的方法,而且我不想使用 Python 中的 Julia 库。如何在不使用 Python 的 Julia 库的情况下在 Python 中运行交互式 Julia 会话?

帖子版权声明 1、本帖标题:如何在不使用 Python 的 Julia 库的情况下在 Python 中运行交互式 Julia 会话?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由SKB_BGPL在本站《python》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: