【发布时间】:2014-10-12 11:55:28
【问题描述】:
当页面附加到页面列表时,我正在尝试交付工作,但我的代码输出返回 NotImplementedError。这是我正在尝试做的代码:
代码:
from multiprocessing import Pool, current_process
import time
import random
import copy_reg
import types
import threading
class PageControler(object):
def __init__(self):
self.nProcess = 3
self.pages = [1,2,3,4,5,6,7,8,9,10]
self.manageWork()
def manageWork(self):
self.pool = Pool(processes=self.nProcess)
time.sleep(2)
work_queue = threading.Thread(target=self.modifyQueue)
work_queue.start()
#pool.close()
#pool.join()
def deliverWork(self):
if self.pages != []:
pag = self.pages.pop()
self.pool.apply_async(self.myFun)
def modifyQueue(self):
t = time.time()
while (time.time()-t) < 10:
time.sleep(1)
self.pages.append(99)
print self.pages
self.deliverWork()
def myFun(self):
time.sleep(2)
if __name__ == '__main__':
def _pickle_method(m):
if m.im_self is None:
return getattr, (m.im_class, m.im_func.func_name)
else:
return getattr, (m.im_self, m.im_func.func_name)
copy_reg.pickle(types.MethodType, _pickle_method)
PageControler()
输出:
NotImplementedError: pool objects cannot be passed between processes or pickled
有什么方法可以在进程之间传递池对象?
编辑:
我正在使用 Python 2.6
【问题讨论】:
-
python 2.7,我想?
-
Python 2.6,但是我一直在阅读和python 2.7有同样的问题。
标签: python multiprocessing pool