将四个并行 运行 python 程序的输出保存到不同的日志文件
Save output of four parallely running python program to different log files
我有四个不同的程序 运行,它们是使用一个 python 程序启动的。
import os
from multiprocessing import Pool
import sys
processes = ('p1.py', 'p2.py', 'p3.py','p4.py')
def run_process(process):
os.system('python3 {}'.format(process))
pool = Pool(processes=4)
pool.map(run_process, processes)
目前我正在使用 nohup 在单个文件中获取所有程序的日志 pmain.py>test.log
但是如何在不同的日志文件中分别获取p1,p2,p3,p4四个不同的日志呢
一个简单的修复方法,
import os
from multiprocessing import Pool
import sys
processes = ('p1.py > p1.log', 'p2.py > p2.log', 'p3.py > p3.log','p4.py > p4.log')
def run_process(process):
os.system('python3 {}'.format(process))
pool = Pool(processes=4)
pool.map(run_process, processes)
但是不要做上面的事情
正确的方法是将 subprocess
与类似
的东西一起使用
import subprocess
processes = ('p1.py', 'p2.py', 'p3.py','p4.py')
procs = []
for pname in processes:
logfile = os.path.splitext(pname)[0] + '.log'
with open(logfile, 'w') as f:
proc = subprocess.Popen(['python3', pname], stdout=f)
procs.append(proc)
for proc in procs:
proc.wait()
我有四个不同的程序 运行,它们是使用一个 python 程序启动的。
import os
from multiprocessing import Pool
import sys
processes = ('p1.py', 'p2.py', 'p3.py','p4.py')
def run_process(process):
os.system('python3 {}'.format(process))
pool = Pool(processes=4)
pool.map(run_process, processes)
目前我正在使用 nohup 在单个文件中获取所有程序的日志 pmain.py>test.log
但是如何在不同的日志文件中分别获取p1,p2,p3,p4四个不同的日志呢
一个简单的修复方法,
import os
from multiprocessing import Pool
import sys
processes = ('p1.py > p1.log', 'p2.py > p2.log', 'p3.py > p3.log','p4.py > p4.log')
def run_process(process):
os.system('python3 {}'.format(process))
pool = Pool(processes=4)
pool.map(run_process, processes)
但是不要做上面的事情
正确的方法是将 subprocess
与类似
import subprocess
processes = ('p1.py', 'p2.py', 'p3.py','p4.py')
procs = []
for pname in processes:
logfile = os.path.splitext(pname)[0] + '.log'
with open(logfile, 'w') as f:
proc = subprocess.Popen(['python3', pname], stdout=f)
procs.append(proc)
for proc in procs:
proc.wait()