Hi All,
I’ve noticed a small issue when using coefficient functions containing square roots with Python’s multiprocessing library.
Passing a coefficient function with a square root (e.g. sqrt(x+1)) to multiprocessing results in a pickling error and a bad runtime call error.
As an example, I’ve attached a small example that recreates the issue on my Windows machine:
from ngsolve import *
import multiprocessing
def test_func(coeff):
return coeff * 2
def main():
coeff = CoefficientFunction(sqrt(x+1))
runlist = (coeff, coeff, coeff, coeff)
with multiprocessing.get_context("spawn").Pool(4) as pool:
output = pool.map(test_func, runlist)
if __name__ == '__main__':
main()
Replacing the sqrt with **0.5 seems to fix the issue, so I’ve been able to get my code working without further issues, it just seems a little odd.
Regards James