Giter Club home page Giter Club logo

asynchuck's People

Contributors

danielbeach avatar

Watchers

 avatar  avatar  avatar

asynchuck's Issues

asynChuck is synchronous

Async can be a bit tricky, for sure, but your conclusion is incorrect. Here's a version that is 4x faster than your pool version:

import asyncio
import aiohttp
from datetime import datetime
import json


class AsynChuck:
    def __init__(self, number_of_jokes: int):
        self.base_api_url = "http://api.icndb.com/jokes/random"
        self.number_of_jokes = number_of_jokes

    @staticmethod
    def convert_to_json(response):
        jsonified = json.loads(response)
        return jsonified

    async def fetch(self, session:object):
        async with session.get(self.base_api_url) as response:
            return await response.json()

    async def get_em(self):
        async with aiohttp.ClientSession() as session:
            return await asyncio.gather(*[
                self.fetch(session)
                for _ in range(0, self.number_of_jokes)
                ])


def main():
    t1 = datetime.now()
    MrNorris = AsynChuck(number_of_jokes=200)
    loop = asyncio.get_event_loop()
    future = asyncio.ensure_future(MrNorris.get_em())
    responses = loop.run_until_complete(future)
    for joke in responses:
        if joke["type"] == "success":
            print(joke)
    t2 = datetime.now()
    timer = t2 - t1
    print(f'Process took {timer} seconds')


if __name__ == '__main__':
    main()

It does 10,000 jokes in 22s, while poolChuck takes 0:07:03.188157.

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.