Python中如何同时多次打开同一个.py文件进行读写操作

我用的是 Windows 系统,有两个.py 文件

a.py
b.py

a.py 文件是一个循环:

for i in [1,2,3]:
执行 b.py 1
b.py 2
b.py 3
怎么同时打几次同一个.py 文件 传入不同参数。要新的 cmd 窗口的。

我查了试了 2 个方法 在 a.py 里写:
os.system(“python b.py”)
subprocess.call(‘start/wait python b.py’, shell=True)

但是要么是在同一个 cmd 内运行,要么是新打开一个 cmd,但是下一个循环就卡住了,必须关掉一个,第二个循环才把新窗口弹出来。

我需要 b.py 1,b.py 2,b.py 3 三个同时打开独立进程新 cmd 窗口,不用返回什么值。

试了很多次,所以请教大家。
Python中如何同时多次打开同一个.py文件进行读写操作


10 回复

为什么不包成一个函数多次调用呢…


我无法理解你的问题

此时应该用 subprocess.Popen() ,如果要等就主动调 process object 的 wait() 方法
我想 subprocess.call() 里面应该调用了 wait()

批处理命令 start 了解一下?

没看懂,重新组织下语言。你为什么需要开新的 cmd 窗口?

a.py
python<br>import subprocess<br>from subprocess import Popen, PIPE, STDOUT<br><br>if __name__ == '__main__':<br> for i in range(1,4):<br> cmd = "python <a target="_blank" href="http://b.py" rel="nofollow noopener">b.py</a> " + str(i)<br> with Popen(cmd, shell=True, stdout=PIPE, stderr=STDOUT) as res:<br> out = res.stdout.read()<br> out = bytes.decode(out,encoding = "utf-8")<br> print(out)<br><br>

b.py
python<br>import sys<br><br>if __name__ == '__main__':<br> print(sys.argv[1])<br>

windows 文件占用问题。换 linux 可解。

办法 1. 将 system 包在线程中,随便循环
办法 2. 使用启动进程 API, python 的或者 os 的都行,不要 wait.

进程相关知识你还不是很熟悉,另外楼上有同学回复有误,不要被误导

楼上+1,顺带还有一种解决方法是 os.system(“cmd /c python x.py”)

  1. 简单写着玩就用 threading 就可以

    2. 如果想正经写, 可以考虑线程池.

    cup 的线程池满足你要求:

    https://github.com/baidu/CUP/blob/master/cup/services/threadpool.py

    3. 或者用异步 shell
    cup.shell.oper 中的 ShellExec

    看你的选择吧
回到顶部