'Running codes from a list once python
Here I have a code, but I want all of this code to run at same time without each waiting for other to finish before the other run.
from telegram import *
from telegram.ext import *
import telegram
IDs = [1111,2222,3333,4444]
def start(update,context) -> None:
    while True:
        for user in IDs:
            context.bot.send_message(user,f"hello {user}")
Is there a way to send messages to all of these users at once without waiting for it to send to 1111, then 2222,3333 and 4444...?
Solution 1:[1]
With a huge caveat, yes. You can use asyncio if the calls to send_message can not block the process. This offers concurrency and not parallelism. It would look something like this:
import asyncio
async def main():
    await start(None, None)
async def send_message(user, msg):
    """Has to be non-blocking.
    That is, there has to be a way to instruct the loop to come back and
    check later. For instance, if this is an api that returns a task
    handle, you can call `asyncio.sleep(1)` between every call to check
    the task status. That way the thread can move back to the loop for 1
    second at a time.
    """
    print(f"{msg} {user}")
async def start(update, context) -> None:
    await asyncio.gather(
        *[
            asyncio.create_task(send_message(user, "hello"))
            for user in [1111, 2222, 3333, 4444]
        ]
    )
if __name__ == "__main__":
    asyncio.run(main())
But that may not work in your case at all, if the call to send_message waits for a response before continuing.
Here is a good answer to multiprocessing vs multithreading vs asyncio in Python 3
Solution 2:[2]
PTB comes with a built-in tool to run I/O bound tasks in a thread pool - Dispatcher.run_async. Note that this has nothing to do with asyncio. Please see this wiki page for more details.
Note that the recently published pre-release v20.0a0 introduces asyncio to PTB, so starting from v20.x, the answer given by @theherk will indeed by applicable.
Disclaimer: I'm currently the maintainer of python-telegram-bot.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | |
| Solution 2 | CallMeStag | 
