Giter Site home page Giter Site logo

alx-backend-python's Introduction

alx-backend-python

Backend Projects with Python was released at Jan 10, 2023 12:00 PM An auto review will be launched at the deadline

Resources Read or watch:

PEP 530 – Asynchronous Comprehensions What’s New in Python: Asynchronous Comprehensions / Generators Type-hints for generators Learning Objectives At the end of this project, you are expected to be able to explain to anyone, without the help of Google:

How to write an asynchronous generator How to use async comprehensions How to type-annotate generators Requirements General Allowed editors: vi, vim, emacs All your files will be interpreted/compiled on Ubuntu 18.04 LTS using python3 (version 3.7) All your files should end with a new line The first line of all your files should be exactly #!/usr/bin/env python3 A README.md file, at the root of the folder of the project, is mandatory Your code should use the pycodestyle style (version 2.5.x) The length of your files will be tested using wc All your modules should have a documentation (python3 -c 'print(import("my_module").doc)') All your functions should have a documentation (python3 -c 'print(import("my_module").my_function.doc)' A documentation is not a simple word, it’s a real sentence explaining what’s the purpose of the module, class or method (the length of it will be verified) All your functions and coroutines must be type-annotated. Tasks 0. Async Generator mandatory Write a coroutine called async_generator that takes no arguments.

The coroutine will loop 10 times, each time asynchronously wait 1 second, then yield a random number between 0 and 10. Use the random module.

bob@dylan:~$ cat 0-main.py

!/usr/bin/env python3 import asyncio

async_generator = import('0-async_generator').async_generator

async def print_yielded_values(): result = [] async for i in async_generator(): result.append(i) print(result)

asyncio.run(print_yielded_values())

bob@dylan:~$ ./0-main.py [4.403136952967102, 6.9092712604587465, 6.293445466782645, 4.549663490048418, 4.1326571686139015, 9.99058525304903, 6.726734105473811, 9.84331704602206, 1.0067279479988345, 1.3783306401737838] Repo:

GitHub repository: alx-backend-python Directory: 0x02-python_async_comprehension File: 0-async_generator.py

Async Comprehensions mandatory Import async_generator from the previous task and then write a coroutine called async_comprehension that takes no arguments. The coroutine will collect 10 random numbers using an async comprehensing over async_generator, then return the 10 random numbers.

bob@dylan:~$ cat 1-main.py

!/usr/bin/env python3 import asyncio

async_comprehension = import('1-async_comprehension').async_comprehension

async def main(): print(await async_comprehension())

asyncio.run(main())

bob@dylan:~$ ./1-main.py [9.861842105071727, 8.572355293354995, 1.7467182056248265, 4.0724372912858575, 0.5524750922145316, 8.084266576021555, 8.387128918690468, 1.5486451376520916, 7.713335177885325, 7.673533267041574]

Repo:

GitHub repository: alx-backend-python Directory: 0x02-python_async_comprehension File: 1-async_comprehension.py

Run time for four parallel comprehensions mandatory Import async_comprehension from the previous file and write a measure_runtime coroutine that will execute async_comprehension four times in parallel using asyncio.gather. measure_runtime should measure the total runtime and return it.

Notice that the total runtime is roughly 10 seconds, explain it to yourself.

bob@dylan:~$ cat 2-main.py

!/usr/bin/env python3 import asyncio

measure_runtime = import('2-measure_runtime').measure_runtime

async def main(): return await(measure_runtime())

print( asyncio.run(main()) )

bob@dylan:~$ ./2-main.py 10.021936893463135

Repo:

GitHub repository: alx-backend-python Directory: 0x02-python_async_comprehension File: 2-measure_runtime.py

alx-backend-python's People

Contributors

icollinss avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.