python 示例说明如何将实例方法与多处理模块一起使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 示例说明如何将实例方法与多处理模块一起使用相关的知识,希望对你有一定的参考价值。
from multiprocessing import Pool
from functools import partial
def _pickle_method(method):
func_name = method.im_func.__name__
obj = method.im_self
cls = method.im_class
if func_name.startswith('__') and not func_name.endswith('__'): #deal with mangled names
cls_name = cls.__name__.lstrip('_')
func_name = '_' + cls_name + func_name
return _unpickle_method, (func_name, obj, cls)
def _unpickle_method(func_name, obj, cls):
for cls in cls.__mro__:
try:
func = cls.__dict__[func_name]
except KeyError:
pass
else:
break
return func.__get__(obj, cls)
import copy_reg
import types
copy_reg.pickle(types.MethodType, _pickle_method, _unpickle_method)
class someClass(object):
def __init__(self):
pass
def f(self, x=None):
#can put something expensive here to verify CPU utilization
if x is None: return 99
return x*x
def go(self):
pool = Pool()
print pool.map(self.f, range(10))
if __name__=='__main__':
sc = someClass()
sc.go()
x=[someClass(),someClass(),someClass()]
p=Pool()
filled_f=partial(someClass.f,x=9)
print p.map(filled_f,x)
print p.map(someClass.f,x)
以上是关于python 示例说明如何将实例方法与多处理模块一起使用的主要内容,如果未能解决你的问题,请参考以下文章
Python爬虫提速小技巧,多线程与多进程(附源码示例)
Python线程队列与多处理管道
Python 3 中的 Concurrent.futures 与多处理
iOS与多线程(十) —— NSThread的使用以及锁(一)
基于Python的多线程与多进程
Python之mmap内存映射模块(大文本处理)说明