from joblib import Parallel, delayed
num_cores = multiprocessing.cpu_count()
lock = Lock()
def run(num):
lock.acquire()
print("enter"+str(num))
time.sleep(1)
print("exit"+str(num))
lock.release()
results = Parallel(n_jobs=num_cores)(delayed(run)(s) for s in [1,2,3,4,5])
Приведенный выше код дает ошибку из-за lock
_pickle.PicklingError: Could not pickle the task to send it to the workers.
Поддерживает ли Joblib блокировку или другие примитивы, чтобы я мог гарантировать, что следующее будет выполнено атомарно:
print("enter"+str(num))
time.sleep(1)
print("exit"+str(num))