我想更好地了解 joblib 如何处理全局对象。考虑下面的简单示例。
from joblib import Parallel, delayed
class Engine:
def f(self, x):
return x+2
engine = Engine()
def run_engine(x):
return engine.f(x)
def main():
res = Parallel(n_jobs=5)(delayed(run_engine)(x) for x in range(0,100))
print(res)
if __name__ == '__main__':
main()
engine
对象会发生什么?它会被所有生成的进程复制还是以某种方式共享?
如果复制,有任何序列化要求吗?它将复制多少次,n_jobs
次或每次调用run_engine
一次复制一次?范围内的所有对象都被复制了吗?或者 joblib 是否以某种方式神奇地推断出哪些是必需的?