Cut BMesh with python
This code snippet assumes some existing variables which were pre-calculated

'''
bme     : blender BMesh
ed_map  : all the edges to be bisected into 2 edges
new_cos : desired positions of bisection, in same order as ed_map
'''

geom =  bmesh.ops.bisect_edges(self.bme, 
                               edges = ed_map,
                               cuts = 1,
                               edge_percents = {})

new_bmverts = [ele for ele in geom['geom_split'] if isinstance(ele, bmesh.types.BMVert)]

#assign the locations to the new vertices, which were automatically
#placed at edge midpoints
for v, co in zip(new_bmverts, new_cos):
        v.co = co

#connect the new vertices, to cut across the individual faces
ed_geom = bmesh.ops.connect_verts(bme, 
                                  verts = new_bmverts, 
                                  faces_exclude = [], 
                                  check_degenerate = False)
new_edges = ed_geom['edges']

#optionally, split the new edges, to make 2 separate mesh pieces
bme.verts.ensure_lookup_table()
bme.edges.ensure_lookup_table()
bmesh.ops.split_edges(bme, edges = new_edges, verts = [], use_verts = False)