Обновите var (type ) разделяется на многопроцессорность - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть два процесса, которые работают одновременно, и я хочу поделиться переменной, какой тип. Таким образом, у меня есть два модуля, которые могут читать и писать эту переменную. Моя проблема в том, что, используя трубу или очередь, я получаю все значения истории изменений, которые я сделал, но я просто хочу последнее.

Например, функция foo1 () меняет значение этого var x раз (каждая итерация этого x меняет значение), и в этот момент функция foo2 () хочет прочитать и записать этот var. Поэтому, если я хочу прочитать последнее значение, отправленное foo1 (), я должен прочитать очередь или канал, пока он не станет пустым.

Я думал об использовании Manager (), но не смог из-за тип переменной.

Мне было интересно, есть ли лучший способ сделать это. Спасибо за ваше время пользователей!

PD Я приведу пример того, что я делаю, чтобы решить это прямо сейчас:

from multiprocessing import Process, Queue
import time

def func1(q):
    rocket = 1
    q.put(rocket)
    print('start func1')
    while rocket < 20000:
        rocket+= 1
        if not q.empty():
            q.get()
        q.put(rocket)
        time.sleep(0.1)
        #print(rocket)
    print('end func1')


def func2(q):
    time.sleep(0.1)
    print('start func2')
    rocket=q.get()
    while rocket < 20000:
        print(rocket)
        time.sleep(0.3)
        rocket=get_last(q)
    print('end func2')

def get_last(q):
    while not q.empty() :
        rocket=q.get()
    return rocket



if __name__ == '__main__':
    q=Queue()
    p1 = Process(target=func1, args=(q,))
    p2 = Process(target=func2, args=(q,))
    p1.start()
    p2.start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...