为了保证多进程下程序运行的稳定性需要用到queue队列,但需要保证queue必须100%可靠,所以验证一下queue是否绝对稳定;
脚本主要验证有没有漏掉数据;
验证方法:
1、至少2个(脚本30个)进程向queue写入数据
2、一个进程读取数据
确保:读取的数据必须和写入的数据量一致,不一致那么queue就不可靠
# -*- encoding: utf-8 -*-
"""
验证queue在多线程put是没有问题的
queue在多线程时不会丢数据
"""
import sys
import re
import time
from multiprocessing import Process, cpu_count, Queue
put_num = 200000
put_multiprocess = 30
get_num = put_num * put_multiprocess
def test_queue():
q = Queue()
puts = []
for i in range(put_multiprocess):
puts.append(Process(target=multiprocess_puts, args=(q,)))
get = Process(target=multiprocess_get, args=(q,))
get.start()
for p in puts:
p.start()
for p in puts:
p.join()
get.join()
def multiprocess_puts(q):
for i in range(put_num):
q.put(i)
def multiprocess_get(q):
# las
for i in range(get_num):
q.get()
print(i)
if i + 1 // 1000 == 0:
print(i)
if __name__ == '__main__':
test_queue()