一、周期性定时器
def timer(fq1, fq2, fq3):
i = int(time.time() * 1000)
fq1.put(i)
fq2.put(i)
fq3.put(i)
threading.Timer(2, timer, args=(fq1, fq2, fq3,)).start()
如上,参数解释如下:
2:定时周期
timer:周期性调用自己
args:参数
二、例子
import threading
import multiprocessing
import time
# 定时器周期性对进程间共享的队列进行写操作
def process2(fq1):
while True:
if not fq1.empty():
# print(time.time(), "进程2 wait")
print(time.time() * 1000, "进程2 get:", fq1.get())
def process3(fq2):
while True:
if not fq2.empty():
# print(time.time(), "进程3 wait")
print(time.time() * 1000, "进程3 get:", fq2.get())
def process4(fq3):
while True:
if not fq3.empty():
# print(time.time(), "进程4 wait")
print(time.time() * 1000, "进程4 get:", fq3.get())
# 定时器,自己调自己
def timer(fq1, fq2, fq3):
i = int(time.time() * 1000)
fq1.put(i)
fq2.put(i)
fq3.put(i)
threading.Timer(2, timer, args=(fq1, fq2, fq3,)).start()
if __name__ == '__main__':
fq1 = multiprocessing.Queue()
fq2 = multiprocessing.Queue()
fq3 = multiprocessing.Queue()
# 创建进程对象
p2 = multiprocessing.Process(target=process2, args=(fq1,))
p3 = multiprocessing.Process(target=process3, args=(fq2,))
p4 = multiprocessing.Process(target=process4, args=(fq3,))
# 启动进程
p2.start()
p3.start()
p4.start()
timer(fq1, fq2, fq3)
# # 等待进程结束
p2.join()
p3.join()
p4.join()