我对python中的多处理有一个问题,请参阅下面的代码:
processArray = []
downtimeObj = []
for x in range(0,len(clientMaster)):
downtimeObj.append(Downtime(clientMaster[x]))
processArray.append(multiprocessing.Process(target=downtimeObj[x].live(),))
for j in range(len(processArray)):
processArray[j].start()
for z in range(len(processArray)):
processArray[z].join()
这里我有一个进程数组“processArray”和一个类对象数组。在我的客户机主机中,我试图遍历我拥有的客户机数量,并为每个客户机创建一个对象,从而为每个客户机创建一个进程
当前代码创建单个进程并按时间顺序运行live()函数
我希望所有客户端都有单独的进程,并且object.live()函数同时运行
您应该更改缩进和只创建所有进程的首次运行循环。运行
.start()
的下一个循环。最后是使用.join()
的循环而且
Process()
(类似于Thread()
)需要函数名,而不需要()
,所以以后它可以使用()
在新进程中启动如果与
()
一起使用,则它在当前进程中运行live()
,并将其结果作为Process()
的参数发送您还可以学习在不使用
range(len())
的情况下使用for
-loop,这样会更具可读性或者您至少应该
.join()
在第一个循环之外运行编辑:
如果需要发送参数,请使用元组ie.
(value1, value2)
并将运行
live(value1, value2)
对于单参数,还需要元组ie.
(value1,)
它需要
,
内部( )
来创建具有单个元素的元组并将运行
live(value1)
您也可以在文档Process中看到它
编辑:
如果您想使用
Pool
始终只运行5个进程并获得所有结果相关问题 更多 >
编程相关推荐