2
这里是我的代码:为什么我在使用multiprocessing.Pool时遇到异常?
import multiprocessing
class Worker:
def run(self, msg):
print '%s, it works!' % msg
def start_process():
print 'Starting',multiprocessing.current_process().name
if __name__=='__main__':
pool = multiprocessing.Pool(processes=2, initializer=start_process,)
pool.apply_async(Worker().run, args=('congbo',))
pool.close()
pool.join()
但我在控制台有一个例外:
Starting PoolWorker-1
Starting PoolWorker-2
Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 319, in _handle_tasks
put(task)
PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed
我刚过一个class.func到pool.apply_async(),但我得到的例外。 有人可以告诉我如何将class.func传递给pool.apply_async(),3x!
谢谢,我已经知道我的程序发生了什么。 –
@ lennart-regebro。我知道这已经过去了几年,但我遇到了同样的问题。不情愿地,我所做的是创建了一个与类方法交互的函数。例如,我做了'def run(msg): –