Один процесс
Если вы работаете на одной машине и не используете dask.distributed, это не имеет значения. Переменная x
присутствует и не нуждается в перемещении вокруг
Распределенный или многопроцессный
Если нам нужно переместить функцию между процессами, нам нужно будет сериализовать эту функцию в строку байтов. Для этого Dask использует библиотеку cloudpickle .
Библиотека cloudpickle преобразует функцию Python f
в объект bytes
таким образом, чтобы в большинстве настроек захватывать внешние переменные. Поэтому один из способов проверить, будет ли ваша функция работать с Dask, - попытаться сериализовать ее и затем десериализовать на другой машине.
import cloudpickle
b = cloudpickle.dumps(f)
cloudpickle.loads(b) # you may want to try this on your other machine as well
Как Cloudpickle достигает этого может быть довольно сложным. Вы можете посмотреть их документацию.