Python 多进程池.starmap可以';不要胡闹
在下面代码中显示的函数上运行pool starmap命令时遇到问题。我收到错误Python 多进程池.starmap可以';不要胡闹,python,multiprocessing,closures,Python,Multiprocessing,Closures,在下面代码中显示的函数上运行pool starmap命令时遇到问题。我收到错误AttributeError:cannotpickle local object'Class\u Name.Function\u Outer..Function\u inner..Function\u Inner2' 注意:似乎是starmap命令本身导致了问题。我不确定我的输入是否有误,或者是什么——通常它对我有效 下面是导致问题的代码 from fabric import connection import mul
AttributeError:cannotpickle local object'Class\u Name.Function\u Outer..Function\u inner..Function\u Inner2'
注意:似乎是starmap
命令本身导致了问题。我不确定我的输入是否有误,或者是什么——通常它对我有效
下面是导致问题的代码
from fabric import connection
import multiprocessing as mp
paths = ["/path/to/filename.txt", "/path/to/filename2.txt"]
pi_addresses = ["192.168.2.100", "192.168.2.101"]
print
语句输出两个列表,一个是照片,一个是连接。两个列表都有两个条目
非常感谢您的帮助。您需要在
内部制作文件
之外定义内部制作文件
,以便多处理.Pool.starmap
工作。是的,这就是问题所在。谢谢
def Inner_make_files(self, pi_addresses, paths):
#This list just creates a list of Raspberry Pis to SSH into with the fabric module
pi_list = [connection.Connection(x, port=22, user="pi",
connect_kwargs={"password" : “Raspberry”}) for x in self.pi_addresses]
barrier = mp.Barrier(len(self.pi_list))
def Inner2_create_file(self, pi, path):
nonlocal barrier
barrier.wait()
pi.run(“raspistill -o {}”.format(path)) #Creates a new photo on the Pis
pi.get(path, path) #Retrieves new file that was made
print(paths)
print(pi_list)
pool = mp.Pool(processes = len(pi_list))
pool.starmap(Inner2_create_file, zip(pi_list, paths))
pool.close()
pool.join()