我现在需要在同一个场景下测试多个对象,对象的函数都是一个,所以我用multiprocessing来创建多个子进程实例化对象,希望在主进程调用他们,需要如何调整代码?我现在获取的是子进程的对象属性而不是实列化的类。
class dut():
def __init__(self, args_b=args_b_def):
self.log=args_b.log
self.serial_number = args_b.device
logfolder=self.log+'\\'+self.serial_number
if not os.path.exists(logfolder):
os.makedirs(logfolder)
self.logcat_handle=[]
self.d = ''
self.test_mode = args_b.test_mode
self.duration = args_b.duration
self.wait = args_b.wait
self.logVtest=logfolder+'\\'+self.serial_number+'_'+'vtest.log'
self._device_init()
def loop_processes(func,args):
results=[]
processes = []
for i in args:
t = multiprocessing.Process(target=func,args=(i,))
processes.append(t)
for i in processes:
i.start()
for i in processes:
i.join()
results.append(i)
return results
if __name__ == "__main__":
duts=loop_processes(dut,parass)
print(duts)
现在运行结果是这两个进程的列表:
Process name='Process-1' pid=2220 parent=26184 stopped exitcode=0
Process name='Process-2' pid=25832 parent=26184 stopped exitcode=0
没懂你想干什么
子进程是用于过程的,当你有多个互相不耦合的任务需要并发执行,那你就把它们放到多线程或者多进程里
多进程比多线程的好处是处于不同进程中互相更加不耦合,比如多线程同时访问同一个网站会受限,而多进程则不受限
你用子进程来保存状态,然后主进程来获取状态
这是给玩坏了
不是这么玩的
子进程就应该是无状态的,快进快出的