The Bridge running in Python in linux is the biggest problem. Open a terminal (for example with putty) and run "top" to see the cpu usage. Try to keep it under 50%.
A few parameters at 5 times per second with Bridge.put() is possible, but I don't recommend it, because of the cpu load in linux. The 50Hz is way too much. Beside that you have also a Python script to send them to a server.
There is about 30Mbyte of fast ram storage in /tmp and more storage if you add a SD memory card. You could do a test to write the data to a file, and upload the file every few seconds.
If you really need 50Hz, then I suggest to try the Raspberry Pi (or the ESP8266, as mentioned).
The dtostrf() function does not return a String, but a buffer. You could easily get rid of the Strings, to have more time in the Arduino. A good use of millis() is just as accurate as a timer. I think you can do the same without the hardware timer and without the interrupt.
ADDED: Chris Stratton pointed out that the Bridge is not the problem, so I did a small test.
Using 4 values with short names (like: "temp"). Writing them with Bridge.put() every second, and reading them in a webpage via zepto.min.js every second is a cpu load of 6% for "python -u bridge.py". Writing them 50 times per second and reading 1 time per second is a cpu load of 25% for the bridge. Writing them 50 times per second and reading them 50 times per second does not change a lot, it adds extra load for uhttpd, resulting in a total of about 60 to 70%. That is still okay to run commands from a terminal.
This 'clean' test is different then my previous tests. It is therefor indeed possible to send data through the Bridge at 50 times per second. Sorry for my wrong answer.