在不同的终端上多进程 Python 但 运行 以单独跟踪在 Visual Studio 代码中的每个代码中传递的响应

Multiprocess Python but running on different terminals to separately track responses delivered in each of the codes in Visual Studio Code

Question originally asked on Super User and suggested deleting it from there and creating a new question here in the main community.

我有一个 运行 不间断的代码,但是 每 1 小时 它会调用另一个代码。

我需要它的原因是能够实时跟踪每个代码中传递的文本,而不会混淆它们。

有什么办法可以让这个副码运行与主码完全分开吗?

一个基本的例子是这样的:

代码一(Multiprocess_Part_1.py):

import multiprocessing
from time import sleep
import Multiprocess_Part_2

def main():
    a = 1+1
    print(a)
    p1 = multiprocessing.Process(target=Multiprocess_Part_2.secondary)
    p1.start()
    sleep(10)
    main()

if __name__ == '__main__':
    main()

代码二 (Multiprocess_Part_2.py):

def secondary():
    b = 2+2
    print(b)

最终结果:

2
4
2
4
2
4

预期的响应,例如,有一种方法可以在单独的终端中 运行 第二个代码:

Terminal 1            Terminal 2
2                     4
2                     4
2                     4
2                     4

视觉预期示例:

不,您无法控制如何直接从 Python.

中打开 VSCode 终端

不过,你好像在Windows;你可以使用 start 来启动一个新的 Python 带有新终端的解释器 window:

os.system("start python Multiprocess_Part_2.py")

(或等效的 subprocess.call 调用)。

如果你使用 virtualenvs,你也想使用 sys.executable 而不是 python

# TODO: ensure this quoting is correct for Windows
os.system(f'start "{sys.executable}" Multiprocess_Part_2.py')

换句话说,您的脚本可能会变成

import os
import time
import sys


def main():
    while True:
        os.system(f"start \"{sys.executable}\" Multiprocess_Part_2.py")
        time.sleep(10)


if __name__ == '__main__':
    main()

并且您的 Multiprocess_Part_2.py 需要能够 运行 作为 stand-alone 程序:

def secondary():
    b = 2+2
    print(b)

if __name__ == '__main__':
    secondary()