from multiprocessing import Process, Queue, Lock
from datetime import datetime
import numpy as np
import time
import os
def func1(q, lock):
print(f'get into func1: pid: {os.getpid()}')
for i in range(10):
d = {'fun_1': {str(i) + '-' + datetime.now().strftime('%H:%M:%S.%f'): np.random.randint(1000)}}
with lock:
q.put(d)
time.sleep(1)
def func2(q, lock):
print(f'get into func2: pid: {os.getpid()}')
for i in range(10):
d = {'fun_2': {str(i) + '-' + datetime.now().strftime('%H:%M:%S.%f'): np.random.random()}}
with lock:
q.put(d)
time.sleep(1.5)
def func3(q):
print(f'get into func3: pid: {os.getpid()}')
for i in range(30):
d = q.get()
if len(d):
print('fun3 received:')
print(d)
time.sleep(0.01)
if __name__ == '__main__':
q = Queue()
lock = Lock()
p1 = Process(target=func1, args=(q, lock))
p1.daemon = True
p2 = Process(target=func2, args=(q, lock))
p2.daemon = True
p3 = Process(target=func3, args=(q, ))
p3.daemon = True
p1.start()
p2.start()
p3.start()