繁体   English   中英

如何从一个函数并行启动2个(或更多)进程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM