# -*- 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))