对送检文档进行查重
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
2.5 KiB

# -*- coding:utf-8 -*-
# @Time: 2023/8/29 18:58
# @Author:ZYP
# @File:demo01_multiprocessimg.py
# @mail:zypsunshine1@gmail.com
# @Software: PyCharm
import json
import multiprocessing
import os
import time
import uuid
import signal
from util import Logging
import redis
import requests
from SearchSimPaper import search_sim_paper
from mysql_collect import mysql
pool = redis.ConnectionPool(host='192.168.31.145', port=63179, max_connections=50, password='zhicheng123*', db=8)
redis_ = redis.Redis(connection_pool=pool, decode_responses=True)
db_key_query = 'query'
log = Logging()
def check_main_func(uuid_):
while True:
if redis_.llen(db_key_query) == 0:
continue
while True:
ss = redis_.rpop(db_key_query)
if ss is None:
time.sleep(2)
else:
break
paper_data = json.loads(ss.decode())
id_ = paper_data["id"]
message_dict = paper_data["paper"]
class_res = \
json.loads(requests.post('http://192.168.31.145:50003/roformer', data=json.dumps(message_dict)).text)[
'label_num']
# class_res = [117, 36, 81]
sim_paper_id_dict = search_sim_paper(message_dict, class_res, mysql, log)
redis_.set(id_, json.dumps(sim_paper_id_dict))
pid = redis_.hget('process_pid', uuid_)
log.log("这个进程的 uuid 为:", uuid_)
redis_.hdel("process_pid", uuid_)
os.kill(int(pid), signal.SIGTERM)
break
# def set_process():
# name = str(uuid.uuid1())
# process = multiprocessing.Process(target=check_main_func, args=(), name=name)
# process.start()
# process.join()
# return name, process
if __name__ == '__main__':
# while redis_.llen('process_num') < 4:
# name, process = set_process()
# redis_.lpush('process_num', name)
# process.is_alive()
# pool = multiprocessing.Pool(processes=4)
# while True:
# if redis_.llen('process_num') < 4:
# redis_.lpush('process_num', '1')
# pool.apply_async(check_main_func, args=())
# pool = multiprocessing.Pool(processes=4)
while True:
if redis_.hlen('process_pid') < 4:
uuid_ = str(uuid.uuid1())
process = multiprocessing.Process(target=check_main_func, args=(uuid_,))
process.start()
process_id = process.pid
redis_.hset('process_pid', uuid_, str(process_id))