The ability to execute code in parallel is crucial in a wide variety of scenarios. Concurrent programming is a key asset for web servers, producer/consumer models, batch number-crunching and pretty much any time an application is bottlenecked by a resource.
It’s sadly the case that writing quality concurrent code can be a real headache, but this article aims to demonstrate how easy it is to get started writing threaded programs in Python. Due to the large number of modules available in the standard library which are there to help out with this kind of thing, it’s often the case that simple concurrent tasks are surprisingly quick to implement.
We’ll walk through the difference between threads and processes in a Python context, before reviewing some of the different approaches you can take and what they’re best suited for.
Continue reading “Thread Carefully: An Introduction To Concurrent Python”
Since the first desktop 3D printers, people have been trying to figure out a way to manage desktop 3D printers and turn them into tiny little automated factories. One of the first efforts was a conveyor belt build plate that was successfully used by MakerBot until it wasn’t anymore. Octoprint has been a boon for anyone who wants to manage a few printers, but that’s only half the solution.
For his Hackaday Prize entry, [Mike] has come up with a solution that turns a desktop 3D printer into a completely automated factory. Not only does this project take care of removing the part from the bed when the print is done, it also manages a web-based print queue. It is the simplest way to manage a printer we’ve ever seen, and it’s a great entry for the Hackaday Prize.
First up, the software stack. [Mike] has developed a web-based queue and slicing software that ingests 3D models and spits out Gcode to a printer. This, really, is nothing new. Octoprint does it, Astroprint does it, and even a few 3D printers have this capability. This is only one part of the project though, although it is geared more as a maker space management software than simply a dedicated 3D printer controller.
You can’t have an automated mini factory without an automated build plate, though, and here [Mike] has come up with something really great. His solution for dispensing prints after they’re completed is brilliant in its simplicity. All you need to do is drop the floor out from underneath the print. [Mike]’s solution is a trap door print bed. At the beginning of the print, an inkjet printer spits out a piece of paper, with a few lines of text, onto the print bed. When the print is finished, a stepper motor unwinds a cable, and a trap door opens up underneath the print. The part drops into a bin, the door closes, and the next print is loaded up in the queue. It’s brilliantly simple.
You can check out [Mike]’s demo of this system after the break. It’s awesome and so sublimely simple we’re shocked no one has thought of this before.
Continue reading “Hackaday Prize Entry: A 3D Printer Management System”