python - 如何多进程运行类函数
迷茫
迷茫 2017-04-18 09:48:18
0
2
1769
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()

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(2)
Ty80

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()
巴扎黑

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal