Thanks! It looks like I should just need to add the wait=False argument to the chdkptp.py shoot() method (https://chdkptppy.readthedocs.io/en/latest/#chdkptp.ChdkDevice.shoot), but this doesn't seem to have any effect.
OK, I thought you were referring to the CHDK script shoot() function. The chdkptp.py function seems to be a much higher level function, more equivalent to chdkptp CLI shoot or remoteshoot.
I may just try shooting directly on the camera (i.e. not streaming) and then downloading the contents of the SD cards at the end. That would lose the image preview I get via streaming, but should increase speed.
Yes, as far as I understand the chdkptp.py doc, "stream" is what we call remote shoot. While you could in principle take the actual shots near-simultaneously, the downloads would be done sequentially if everything is running in one instance of chdkptp.
FWIWI, if your exposure and focus are fixed, you can speed up shooting significantly by holding half press down and clicking shoot full, so the camera doesn't go through the normal pre-shoot process every shot. Doing this for multiple cameras through chdkptp.py would be require some coding.
script_status doesn't seem to be documented anywhere, and the attempts I made to call '!con:script_status()' using the chdkptp.py execute_lua() method produced errors. Not sure where to go with that.
According to the doc, lua_execute (not execute_lua) runs camera side lua.
To execute chdkptp side lua,
https://github.com/jbaiter/chdkptp.py/blob/master/chdkptp/lua.py suggests you'd use luaContext execute.
The ! is a chdkptp CLI command to execute local lua, so you'd only use that if interacting directly with the CLI or using cli:execute()