Tôi có hai tập tin:
x.py
lớp BF(đối tượng)
định nghĩa __init__():
.
.
def thêm (tự, z):
.
.
y.py
từ y nhập BF
def FUNC((a,b,bf))
.
.
bf.add(x)
.
.
trả lại bạn trai
.
.
nếu __name__ == '__main__':
pool = multiprocessing.Pool(3)
cho tôi trong phạm vi(len(sl)):
bf_set.append(BF())
kết quả = pool.map(FUNC,zip(sl, itertools.repeat(aa), bf_set))
Tôi cũng đã thử xác định BF trong FUNC nhưng vẫn nhận được:
PicklingError: Không thể chọn : tra cứu thuộc tính __buildin__.instancemethod không thành công
Tôi đã đọc một số bài đăng về các vấn đề liên quan, nhưng chúng có pool.map() riêng trong lớp, vì vậy những giải pháp đó không thể áp dụng cho vấn đề này (tôi đoán vậy).
Có ý tưởng gì không?
Về cơ bản tôi sẽ sử dụng những điều trên nhưng chuyển đổi nó thành mã hoạt động. Nếu sử dụngthì là
, không có vấn đề gì với việc tuần tự hóa. tôi đang sử dụng đa xử lý
Cái nĩa được gọi làpathos.multiprocessing
, sử dụng thì là
thay vìdưa chua
.
>>> def FUNC((a,b,bf)):
... z = a+b
... bf.add(z)
... trả lại bạn ơi
...
>>> lớp BF(đối tượng):
... def add(self, z):
... self.z += z
... def __init__(self):
... self.z = 0
...
>>> từ pathos.multiprocessing nhập khẩu ProcessPool dưới dạng Pool
>>> bể bơi = Bể bơi()
>>>
>>> f = BF()
>>> f.add(1)
>>>fz
1
>>>
>>> FUNC((0,1,f))
<__main__.BF đối tượng tại 0x10d387f50>
>>>
>>> FUNC((0,1,f)).z
2
>>>
>>> sl = [BF() cho i trong phạm vi (10)]
>>> kết quả = pool.map(FUNC, zip(range(len(sl)), range(len(sl)), sl))
>>> [bf.z cho bf trong kết quả]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Điều này hoạt động vì bệnh hoạn
sử dụngthì là
, có thể tuần tự hóa hầu hết mọi thứ trong python.
>>> nhập khẩu thì là làm dưa chua
>>> pickle.loads(pickle.dumps(bf.add))
>
>>> pickle.loads(pickle.dumps(BF.add))
获取bệnh hoạn
Vàthì là
hiện hữu:https://github.com/uqfoundation
Giới thiệu về python - Đa xử lý: Lỗi gộp và tẩy - Lỗi tẩy: Không thể chọn : Tra cứu thuộc tính __buildin__.instancemethod không thành công, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/12396451/
Tôi là một lập trình viên xuất sắc, rất giỏi!