Seems fine to do that. Perhaps just have a means of running your app so that it takes a json file as input, doesn't show the UI, and instead invokes the backend directly (just call the run() method instead of handing it to a QThreadPool). Then you should be able to use profiling tools without any (other) special handling.