Move completion bindings to a separate python file
Update locks use to make it a little more effecient when using lutiple threads