Изменить: технически я думаю, что они работают конгруэнтно, но ожидания в одном экземпляре класса операций заставят все остальные классы операций ожидать этого тоже.
Вот упрощенная версия того, чего я пытаюсь достичь:
Код: Выделить всё
import os
from operations import Operations # Assuming this is my custom class
# Load environment variables
os.environ['ADDRESS1'] = 'address1'
os.environ['PRIVATE_KEY1'] = 'private_key1'
os.environ['ADDRESS2'] = 'address2'
os.environ['PRIVATE_KEY2'] = 'private_key2'
class Operations:
def __init__(self, address, private_key):
self.address = address
self.private_key = private_key
async def run(self):
while True:
print(f"Running operations for {self.address}")
await do_other_thing()
await asyncio.sleep(1)
# Initialize instances with different addresses and private keys
instances = [
Operations(os.getenv('ADDRESS1'), os.getenv('PRIVATE_KEY1')),
Operations(os.getenv('ADDRESS2'), os.getenv('PRIVATE_KEY2'))
]
async def run_instance(instance):
await instance.run()
async def main():
tasks = [asyncio.create_task(run_instance(instance)) for instance in instances]
await asyncio.gather(*tasks)
if __name__ == "__main__":
asyncio.run(main())
Хотя я использую asyncio.create_task для одновременного запуска каждого экземпляра, кажется, что вызовы ожидания в каждом экземпляре Operations вызывают задержки, что делает их видимыми. как будто они не выполняются полностью независимо.
Что я пробовал:
Убедиться, что каждая операция в методе запуска правильно использует ожидание, чтобы позволить другим задачам выполняться одновременно.
Добавление небольших задержек во время сна для предотвращения зацикливания.
Что мне нужно:
Мне нужно руководство о том, как эффективно запускать несколько экземпляров класса одновременно в одном приложении Python, гарантируя, что они работают независимо и максимизируют параллелизм. По сути, я хочу, чтобы каждый экземпляр Operations работал так, как будто он работает в отдельном терминале.
Дополнительная информация:
Версия Python: 3.12
Использование asyncio
Как мне добиться по-настоящему независимого и одновременного выполнения этих экземпляров классов? Будем очень признательны за любую помощь или рекомендации по передовому опыту!
Подробнее здесь: https://stackoverflow.com/questions/787 ... on-applica