ฉันพยายามที่จะใช้งานmultiprocessing
ของPool.map()
ฟังก์ชั่นที่จะแบ่งออกงานพร้อมกัน เมื่อฉันใช้รหัสต่อไปนี้มันทำงานได้ดี:
import multiprocessing
def f(x):
return x*x
def go():
pool = multiprocessing.Pool(processes=4)
print pool.map(f, range(10))
if __name__== '__main__' :
go()
อย่างไรก็ตามเมื่อฉันใช้มันในแนวทางเชิงวัตถุมากกว่ามันไม่ทำงาน ข้อความแสดงข้อผิดพลาด:
PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup
__builtin__.instancemethod failed
สิ่งนี้เกิดขึ้นเมื่อโปรแกรมหลักของฉันคือ:
import someClass
if __name__== '__main__' :
sc = someClass.someClass()
sc.go()
และต่อไปนี้เป็นsomeClass
ชั้นเรียนของฉัน:
import multiprocessing
class someClass(object):
def __init__(self):
pass
def f(self, x):
return x*x
def go(self):
pool = multiprocessing.Pool(processes=4)
print pool.map(self.f, range(10))
ใครรู้ว่าปัญหาอาจเป็นวิธีที่ง่ายหรือรอบ ๆ ?
PicklingError: Can't pickle <class 'function'>: attribute lookup builtins.function failed