У меня есть два процесса, которые работают одновременно, и я хочу поделиться переменной, какой тип. Таким образом, у меня есть два модуля, которые могут читать и писать эту переменную. Моя проблема в том, что, используя трубу или очередь, я получаю все значения истории изменений, которые я сделал, но я просто хочу последнее.
Например, функция 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()