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.
86 lines
2.5 KiB
86 lines
2.5 KiB
2 years ago
|
# -*- 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))
|