Python 是否需要通过';自我’;在使用ADING.Thread或带有类方法的multiprocessing.Process时指向参数

Python 是否需要通过';自我’;在使用ADING.Thread或带有类方法的multiprocessing.Process时指向参数,python,multithreading,multiprocessing,Python,Multithreading,Multiprocessing,例如,通过类方法使用线程或多处理 class ExampleClass: def run(self, run_param): print run_param def run_parallel(self, num): processes = [] for i in xrange(num): p = multiprocessing.Process(target=self.run, args=(i,))

例如,通过类方法使用线程或多处理

class ExampleClass:
    def run(self, run_param):
        print run_param

    def run_parallel(self, num):
        processes = []
        for i in xrange(num):
            p = multiprocessing.Process(target=self.run, args=(i,))
            # should I pass self to args like
            # p = multiprocessing.Process(target=self.run, args=(self, i))
            processes.append(p)
        for p in processes:
            p.start()
        for p in processes:
            p.join()

由于您正在将
self.run
作为绑定方法传递,因此不需要将
self
作为第一个参数传递给它:

p = multiprocessing.Process(target=self.run, args=(i,))
只有将未绑定方法作为
target
参数传递给
Process
时,才需要
self

p = multiprocessing.Process(target=ExampleClass.run, args=(self, i))