线程程序不会运行

时间:2017-03-20 23:31:32

标签: python multiprocessing

我似乎无法让我的fib_worker类运行

import multiprocessing


 class fib_Worker(object):
     def worker(self, num):
         """thread worker function"""
        print 'Worker:', num
        return
if __name__ == '__main__':
    jobs = []

    for i in range(5):
        p = multiprocessing.Process(target=Self.fib_Worker.worker, args=(i,))
        jobs.append(p)
        p.start()

我收到此错误:

TypeError: unbound method worker() must be called with fib_Worker instance as first argument (got int instance instead)

我试过用不同的方式调用它并且不确定什么是错的,谢谢

编辑添加到mhawkes建议

1 个答案:

答案 0 :(得分:1)

什么是import numpy as np from itertools import compress from random import sample a = 2 y = [0, 1, 1, 0, 1, 0, 1, 0, 1, 1] X = np.random.rand(10, 3) picked = sample(list(compress(X, y)), a) ?您需要首先实例化该类:

Self.fib_Worker

p = multiprocessing.Process(target=fib_Worker().worker, args=(i,)) 创建了一个类fib_Worker()的实例。一旦你有了,你可以调用它的方法。

您还需要在fib_Worker方法中添加self参数:

worker()

另一个选项,因为它没有状态,你也可以创建一个类的单个实例并传递它的方法:

    def worker(self, num):
        """thread worker function"""
        print 'Worker:', num
        return