Как я могу изменить количество сопрограмм в середине процесса? - PullRequest
0 голосов
/ 13 июля 2020

Я хочу выполнить асинхронную c обработку в python3 .8,

Как я могу изменить количество сопрограмм в середине процесса?

Возможно ли изменить семафор, изменив количество лимитов по пути?

async def exec(id1,id2):
    print(f'start: {id1}  end: {id2}')
    loop = asyncio.get_event_loop()
    func = functools.partial(run_insert,id1,id2)
    await loop.run_in_executor(None, func)

async def parallel_call(s2elist,limit):
    sem = asyncio.Semaphore(limit)

    async def call(start,end):
        async with sem:
            return await exec(start,end)

    return await asyncio.gather(*[call(s,e) for s,e in s2elist])

if __name__ == '__main__':
    s2elist = [[1000,2000],
            [2000,3000],
            [3000,4000],
            [4000,5000],
            [5000,6000],
            [6000,7000],
            [7000,8000],
            [8000,9000],
            [9000,10000]
            ]

    loop = asyncio.get_event_loop()
    loop.run_until_complete(parallel_call(s2elist,10))
...