MiroK tipped me about the SubsetIterator. Posting the solution here.
circ = CompiledSubDomain("(x[0]-0.5)*(x[0]-0.5) + (x[1]-0.5)*(x[1]-0.5) < 0.1*0.1")
subdomains = MeshFunction("size_t", mesh, 2)
subdomains.set_all(0)
circ.mark(subdomains, 1)
marked_cells = SubsetIterator(subdomains, 1)
for cell in marked_cells:
print cell.index()
plot(subdomains)
interactive()