#!/usr/bin/env python3

"""
Module for parallel reading writing to file
"""

# import time
import io
from threading import Thread
from requests import get

class Reader(Thread):
    """
    Reader class
    """
    def __init__(self, file_name):
        Thread.__init__(self)
        self.file_name = file_name

    def run(self):
        # print(self.file_name)
        with open(self.file_name) as file:
            for line in file.readlines():
                print("Read " + line)
                # time.sleep(1)

class Writer(Thread):
    """
    Writer class
    """
    def __init__(self, file_name):
        Thread.__init__(self)
        self.file_name = file_name

    def run(self):
        # print(self.file_name)
        with open(self.file_name, 'w') as file:
            for i in range(1, 2000000):
                print("Writing ", i)
                file.write(str(i))

def run():
    """
    Run method
    ---
    You can take different files too.

    Reader("file.txt").start()
    Writer("another-file.txt").start()
    """
    Reader("file.txt").start()
    Writer("file.txt").start()


def download(url, file_name):
    """
    function to download file over http
    url : URL of file to be downloaded
    file_name : File name
    """
    with io.FileIO(file_name, 'w') as file:
        # get request
        response = get(url)
        # write to file
        file.write(response.content)