Tuesday, April 21, 2020

Python Generator


Have you ever  think through how to build an function that generate infinite series ?
You might be  thinking why can't we use an infinite loop! the problem is you can't come of the loop and again resume from the position/state where you stopped .

But generators helps in this case, they are just like functions but the difference is they have yield keyword in the definition which is like a return wrapped with generator-iterator object

"When you call either a function or a generator, a stackframe is created. It has the local variables
(including the arguments passed into the function),a code pointer to the active opcode, and a stack for pending try-blocks,with-blocks, or loops.

In a regular function, execution begins immediately.When return is encountered, the final result is kept and the stackframe is freed along with everything it referenced.

In a generator function, the stackframe is wrapped in a generator-iterator object and returned immediately. The code in the generator function only runs when called by next(g) or g.send(v). Execution is suspended when yield is encountered. "



Python generator infinite sequence example

Python generator things to be known ( exhausted generator )


Sunday, April 19, 2020

How to deploy python programs to Docker

docker python

Running python programs in Docker

It is quite easy to run your python programs in docker. For getting started with python in docker, we need to install docker in our system.

I am using Ubuntu and followed the instruction details beginners commands to start with Docker.

Once you have installed docker, we can start building our docker. We can create a separate folder/directory for this in our system.

FROM tells Docker which image you base your image on (in the example, Python 3).

RUN tells Docker which additional commands to execute.

CMD tells Docker to execute the command when the image loads.

Dockerfile:

#base image
FROM python:3

#adding our first program/application to docker image
ADD app.py /
ADD app2.py /

#this time we are using a script to run our applications.
ADD script.sh /
#make the script executable
RUN ["chmod", "+x", "./script.sh"]
#changed the command to run the script
CMD ./script.sh 
#you can read more about commands in docker at https://docs.docker.com
#add the command instruction
#CMD ["python","./app.py"]

script file:

You can specify your python programs in the script.
Note: I have explicitly used python3 to run the programs.

#!bin/bash

#first process
python3 app.py

#second process
python3 app2.py

Python applications

print("this is my first pythong docker program")