3 ms·
Lots of good replies to this -- and some good links which I am going to follow. I appreciate the comments! I appreciate this comment as well -- and indeed I w
by breatheoften 10y ago
Lots of good replies to this -- and some good links which I am going to follow. I appreciate the comments!
I appreciate this comment as well -- and indeed I will agree that my expectations are part of the problem.
I'm not actually doing 'performance critical' work -- but rather prototyping tasks -- the speed of my feedback cycle is the only thing that's performance sensitive within the context of my rant -- and this includes time to run the code and the time to debug it.
I should also acknowledge other (self-induced) problems including the need to run code on a remote server for extra hardware capability vs my pitiful laptop.
I should acknowledge that part of my frustration could come from my development process as from the inherent nature of the underlying tools themselves ... I've experimented with my process -- trying to find something that works for me and I've ended up with this hobbled kludge of tools:
- a script that re-runs rsync on file changes
- atom + hydrogen extension connected via ssh to a jupyter kernel_gateway
- some ssh terminals where I run longer running code from command line
- an sshfs mount of a remote directory on the server for viewing some output artifacts ...
Avoidable runtime errors after longish-running processing tasks are a very frustrating time-sync ...
- abhirag 10y agoNow that I have a better idea of your dev setup I think I can be of a bit more help :) 1. If you are prototyping and prefer working on a remote server, have a look at(https://notebooks.azure.com/ https://notebooks.azure.com/), memory is limited to 4Gb but its free and jupyter notebooks are great for prototyping. 2. For prototyping you should try and do REPL driven development, what I mean is that you should be ok with just playing around with the library API before you write a longish-running processing task, that would reduce(not remove) the chances of a runtime error. Jupyter notebooks excel in this too as you can just try out code in a cell, learn from it, rinse and repeat. You can also use your IDE to send code fragments to REPL and get immediate feedback on them. This way of iterative development would make sure that the speed of your feedback cycle isn't slow. If python's feedback cycle seems slower to you than C++, you are definitely not using the REPL enough :) 3. If debugging is a pain point definitely give an IDE a try, I prefer Visual Studio as I am on Windows. You can very well go with Pycharm or vscode(not technically an IDE but has a debugger so that's that). I personally prefer Jupyter notebook or Emacs with my code and REPL in split windows for prototyping, different strokes for different folks. I personally love working with python, I even write my blog posts in a Jupyter Notebook so although it isn't perfect, it doesn't have to be frustrating either :) Hope my suggestions can be of some help!