[英]How to start 2 (or more) processes in parallel from a function
我试图从一个类中的一个函数并行启动2个进程,但无法正常工作。 我正在尝试这样的事情:
from multiprocessing import Process
class MyClass():
#something here to create a large list L
def myClassFunction1():
#something here
....
....
def myClassFunction2():
#something here
p1 = Process(target=myProcess1,args=(L,))
p2 = Process(target=myProcess2,args=(L,))
p1.start()
p2.start()
p1.join()
p2.join()
#something else here
def myProcess1(L):
#do something here with L
def myProcess2(L):
#do something here with L
我在python中不是很好.....而且我不太了解多处理的工作原理。 我希望有人能给我一些帮助。
谢谢!
您需要将这些函数称为实例方法:
p1 = Process(target=self.myProcess1,args=(L,))
p2 = Process(target=self.myProcess2,args=(L,))
在您的辅助函数中,将self作为第一个参数:
def myProcess1(self, L):
#do something awesome with L
def myProcess1(self, L):
#do something as awesome as myProcess1 with L
希望这可以帮助!
我以前从未使用过多处理模块,但是您可以使用线程模块...
import threading
class worker (threading.Thread):
def __init__(self,extraArgs):
threading.Thread.__init__(self)
self.storeArgs = extraArgs
def run(self):
//add code can use self.storeArgs
a = worker(argsA)
b = worker(argsB)
a.start() //starts concurrent thread using worker.run()
b.start() //starts concurrent thread using worker.run()
while threading.activeCount()>1: //loop to make sure threads are finished running
continue
您可以为要运行的不同方法创建两个类,也可以为工作人员提供两个方法,并使用if / else或case逻辑来确定要在其run / start方法中使用哪个方法
在创建过程之前,只需定义功能即可。 Python解释器逐行读取模块,直到到达创建进程的行时,才定义函数。
我建议您将这些功能放在单独的模块中,然后从那里导入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.