这是对象是作为引用传入还是在每个线程中都有复制呢?如果是引用的话,多线程调用对象内部的方法时会影响返回值吗?
1
billgreen1 Apr 15, 2016
先说结论:
多线程的话,不会。由于 GIL ,不会出现多个线程『同时』修改你的对象。 多进程,会。因为是 fork 一份数据过去的。 代码如下,如果多进程,去掉 backend 参数即可。 from joblib import Parallel, delayed import numpy as np import time class C(object): pass def func(c): c.value+=1 print(c.value) c = C() c.value=0 Parallel(n_jobs=4, backend='threading')(delayed(func)(c) for _ in range(20)) |