The number of shots can only be set to 1 for 'fock' backend, as described here. Therefore, to obtain 10000 measurement sampes, I need to run the circuit for 10000 times. I have already defined the parameterized program and the engine as attributes of my class GBS . Then I tried to use ProcessPoolExecutor to to run the circuit 10000 times concurrently. However, this error occurs: TypeError: LocalEngine.__new__() missing 1 required positional argument: 'backend.
A MWE is shown as follows:
from concurrent.futures import ProcessPoolExecutor
import strawberryfields as sf
from strawberryfields import ops
class GBS:
def __init__(self):
prog = sf.Program(2)
a = prog.params('a')
with prog.context as q:
ops.Dgate(a ** 2) | q[0] # free parameter
ops.Sgate(1) | q[1]
ops.MeasureFock() | q
self.prog = prog
self.eng = sf.Engine('fock', backend_options={'cutoff_dim': 5})
def test(self, param):
result = self.eng.run(self.prog, args={'a': param})
return result
def run(self):
with ProcessPoolExecutor(1) as executor:
future = executor.submit(self.test, 1)
future.result()
def main():
gbs = GBS()
gbs.run()
if __name__=='__main__':
main()

How can I solve this?
The number of shots can only be set to 1 for 'fock' backend, as described here. Therefore, to obtain 10000 measurement sampes, I need to run the circuit for 10000 times. I have already defined the parameterized program and the engine as attributes of my class
GBS. Then I tried to use ProcessPoolExecutor to to run the circuit 10000 times concurrently. However, this error occurs:TypeError: LocalEngine.__new__() missing 1 required positional argument: 'backend.A MWE is shown as follows:
How can I solve this?