我试图从一个类中的函数并行启动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中不是很好.....我并不理解多处理的工作原理。我希望有人可以给我一些帮助。
谢谢!
答案 0 :(得分:0)
您需要将这些函数称为实例方法:
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
希望这有帮助!
答案 1 :(得分:0)
我之前从未使用过多处理模块,但您可以使用线程模块......
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
您可以为要运行的不同方法创建两个类,或者为worker提供两个方法,并使用if / else或case逻辑来决定在其中使用哪个方法的run / start方法
答案 2 :(得分:0)
只需在创建流程之前定义功能。 Python解释器逐行读取模块,当它到达创建过程的行时,函数未定义。
我建议您将这些功能放在一个单独的模块中,然后从那里导入。