recherche

Maison  >  Questions et réponses  >  le corps du texte

python - 如何多进程运行类函数

from multiprocessing import Pool

def a(num):
    print num

if __name__ == "__main__":
    pool = Pool(3)
    for i in range(10):
        pool.apply_async(a,args=(i,))
    pool.close()
    pool.join()

用进程池运行a这个函数,返回结果是正常的,但是假如这么写:

from multiprocessing import Pool


class adb():
    def a(self,num):
        print num


if __name__ == "__main__":
    pool = Pool(3)
    for i in range(10):
        pool.apply_async(adb().a,args=(i,))
    pool.close()
    pool.join()

则程序没有任何返回就结束了,请问这是怎么回事呢,有什么办法让后面这种写法也可以运行呢?

迷茫迷茫2802 Il y a quelques jours1765

répondre à tous(2)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 09:50:18

    Lors de l'utilisation d'une classe, cet objet de classe n'est pas instancié. Deuxièmement, lors de l'appel d'une fonction, vous devez l'appeler sous la forme de "nom de classe. nom de fonction"

    En fonction de vos modifications :

    • Si vous souhaitez utiliser des méthodes de classe, définissez cette méthode comme méthode de classe :

    class adb():
        @classmethod
        def a(self,num):
            print(num)
    • Si vous souhaitez utiliser des méthodes d'objet de classe, alors initialisez un objet :

    if __name__ == "__main__":
        pool = Pool(3)
        a_obj = adb()
        for i in range(10):
            pool.apply_async(a_obj.a,args=(i,))
        pool.close()
        pool.join()

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:50:18

    pool.apply_async(adb().a,args=(i,))

    répondre
    0
  • Annulerrépondre