Tôi mất cả đêm để gỡ lỗi mã của mình và cuối cùng tôi đã tìm thấy vấn đề phức tạp này. Vui lòng xem mã bên dưới.chức năng gọi lại hoạt động như thế nào trong python multiprocessing map_async
from multiprocessing import Pool
def myfunc(x):
return [i for i in range(x)]
pool=Pool()
A=[]
r = pool.map_async(myfunc, (1,2), callback=A.extend)
r.wait()
Tôi nghĩ mình sẽ nhận được A=[0,0,1]
, nhưng đầu ra là A=[[0],[0,1]]
. Điều này không có ý nghĩa với tôi bởi vì nếu tôi có A=[]
, A.extend([0])
và A.extend([0,1])
sẽ cho tôi A=[0,0,1]
. Có thể gọi lại hoạt động theo một cách khác. Vì vậy, câu hỏi của tôi là làm thế nào để có được A=[0,0,1]
thay vì [[0],[0,1]]
? Cảm ơn bạn trước cho bất kỳ ý kiến.
Bạn đang sử dụng hệ điều hành và phiên bản python nào? –