我对 Python 有点陌生,我想更好地理解类。下面是一些函数,它们有很多相似之处,但传递给每个 multiprocessing 函数的函数不同。无论如何,我可以将所有这些功能放入一个名为 FruitPie 的 class 中吗?
def apple():
if __name__ == '__main__':
pool = mp.Pool(processes=8)
pool.map(func1, same_list)
pool.close()
def banana():
if __name__ == '__main__':
pool = mp.Pool(processes=8)
pool.map(func2, same_list)
pool.close()
def orange():
if __name__ == '__main__':
pool = mp.Pool(processes=8)
pool.map(func3, same_list)
pool.close()
请您参考如下方法:
你的意思是做这样的事情:
class FruitPie:
def __init__(self, arguments):
self.same_list = arguments
def apple(self):
# in python3.3+ you can use the with statement with Pools
with mp.Pool(processes=8) as pool:
pool.map(func1, self.same_list)
def banana(self):
with mp.Pool(processes=8) as pool:
pool.map(func2, self.same_list)
def orange(self):
with mp.Pool(processes=8) as pool:
pool.map(func3, self.same_list)
您可以用作:
# this if is needed only at module level, not everytime you create a pool.
if __name__ == '__main__':
pie = FruitPie(['some', 'arguments'])
pie.apple()
pie.banana()
pie.orange()
请注意,在创建类时,您必须使用 self 显式引用实例。
