Я хотел бы знать, если установка очереди в параметре класса, выполняемого в новом процессоре, в который мы динамически добавляем новые значения из основного процесса c, нарушает многопроцессорность? Это хорошая практика?
asyncio не очень полезен в коде, который я вам даю, но в моем личном коде все будет работать асинхронно, поэтому я предпочел поставить его.
import asyncio
import multiprocessing
from PyQt5 import QtWidgets
class connection():
def __init__(self):
self.request_subscription()
def request_subscription(self):
self.queue = multiprocessing.Queue()
b = multiprocessing.Process(target=Work, args=(self.queue,))
b.start()
def send(self):
self.queue.put('test')
class Work:
def __init__(self, queue):
self.queue = queue
loop = asyncio.get_event_loop()
loop.create_task(self.test())
loop.run_forever()
async def test(self):
while True:
while not self.queue.empty():
print(self.queue.get())
await asyncio.sleep(1)
if __name__ == '__main__':
app = QtWidgets.QApplication([])
window = QtWidgets.QWidget()
button = QtWidgets.QPushButton(window)
a = connection()
button.clicked.connect(a.send)
window.show()
app.exec_()