C# 使用 Process ,启动 python.exe 执行多进程脚本问题。

joyvw
  • 860

我有一个C# 程序,使用Process 启动一个子进程,

C# 子进程中 执行了一个 python.exe multi-process.py 的python多进程脚本,

然后 python启动的子进程就不受C# 程序控制了, 无法关闭,也无法获取 输出

C# 代码

            Process cmd = new Process();
            cmd.StartInfo.FileName = "python.exe";
            cmd.StartInfo.Arguments = "-u multi-process.py";

            cmd.StartInfo.CreateNoWindow = true;
            cmd.StartInfo.WorkingDirectory = workSpace;
            cmd.StartInfo.UseShellExecute = false;
            cmd.EnableRaisingEvents = true;

            cmd.StartInfo.RedirectStandardInput = true;
            cmd.StartInfo.RedirectStandardOutput = true;
            cmd.StartInfo.RedirectStandardError = true;
            cmd.Start();
            cmd.BeginOutputReadLine();
            cmd.BeginErrorReadLine();

python 代码

import sys
import json
import time
from multiprocessing import Process

class Proce(Process):
    def __init__(self, index):
        self.index = index
        super().__init__()

    def run(self):
        ResultHelper.report_server_success(self.index)
        while True:
            print(str(self.index) + " ::" + str(time.strftime('%Y-%m-%d %H:%M:%S')))
            time.sleep(2)


if __name__ == "__main__":
    print('starting ...')
    ResultHelper.report_server_info(2)
    for i in range(2):
        s = i + 1
        Proce(s).start()

    print('starting2 ...')
回复
阅读 1.9k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏