进程间通信常用的方法有信号量、共享内存、消息队列,python的multiprocesss
模块提供了与平台无关的进程相关的API
在项目中使用 multiprocesss
多进程编程时遇到奇怪的问题是: 使用消息队列在不同进程间通信,子进程run方法执行后进程一直不能退出,主进程里调用join方法等待子进程结束,子进程一直不能退出从而导致主进程不能退出
项目背景:
由于在线程对象里不能创建 logger 对象,子进程产生的日志如果需要保存,一种不太推荐的方法是把日志放到消息队列里,子进程结束后主进程把日志从信息队列中读出来。 以下是重现项目中出现问题的代码:
import ctypes
import re
from multiprocessing import Queue
from multiprocessing import Pool
import random
import time
from multiprocessing import Value
from multiprocessing import Process
from src.spider.logmanage import loadLogger
from src.util.mongodbhelper import MongoDBCRUD
class Counsumer(Process):
def __init__(self, queue: Queue, name: s