Как использовать многопроцессорность с процессом asyncio и подпроцессом командной строки?Python

Программы на Python
Ответить
Anonymous
 Как использовать многопроцессорность с процессом asyncio и подпроцессом командной строки?

Сообщение Anonymous »

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

Код: Выделить всё

import asyncio
import aioprocessing
import multiprocessing
import subprocess

# local imports
import steam_bot

async def open_auth():
_ = await asyncio.create_subprocess_exec('wine', '/Users/vortex/Desktop/Steam Project/SDA/Steam Desktop Authenticator.exe')

async def start_bot(q):
p = aioprocessing.AioProcess(target=steam_bot.main)
p.start()
await p.join()

if __name__ == "__main__":
loop = asyncio.get_event_loop()
tasks = [
asyncio.ensure_future(open_auth()),
asyncio.ensure_future(start_bot()),
]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
Steam Desktop Authenticator.exe использует https://github.com/Jessecar96/SteamDesktopAuthenticator и представляет собой процесс, который генерирует графический интерфейс и не имеет определенной последовательности остановки. (обратите внимание, что команда предназначена для запуска exe на Mac с использованием Wine, команда работает правильно).
Вот Steam_bot, использующий пакет Steamio:

Код: Выделить всё

import steam

class MyClient(steam.Client):
async def on_ready(self):
print("------------")
print("Logged in as")
print("Username:", self.user)
print("ID:", self.user.id64)
print("Friends:", len(await self.user.friends()))
print("------------")

async def on_message(self, message: steam.Message):
# we do not want the bot to reply to itself
if message.author == self.user:
return

if message.content.startswith("!hello"):
await message.channel.send(f"Hello {message.author}")

def main():
client = MyClient()
client.run("username", "password")
Ошибки обычно включают объект nonetype, который нельзя использовать в await, возникающий с .create_subprocess_exec() или проблему, указывающую, что steam_bot не содержит переменных, которые определены при инициализации класса (поэтому это не может быть проблемой).
Вполне может возникнуть проблема с тем, как я запускаю программу с помощью aioprocess. Я столкнулся с препятствием, пытаясь устранить ошибки такого типа. Мне нужна помощь в попытке запустить эти два типа программ в одной основной программе.

Подробнее здесь: https://stackoverflow.com/questions/798 ... subprocess
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»