访问同一共享库的Python多进程应用程序

2024-05-17 00:34:51 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的python程序中,我试图在不同的线程中调用一个共享库函数,但几秒钟后它就停止了。会有什么问题

def FnVDC1(l, delay): 
    while True:   
        l.acquire()
        try:
            ret_check = libCAN.WriteCANMessage(handle, byref(VDC1))
        finally:
            l.release()
        time.sleep(delay)

def FnEEC1( l, delay):    
    while True:   
        l.acquire()
        try:
            ret_check = libCAN.WriteCANMessage(handle, byref(EEC1))
        finally:
            l.release()
        time.sleep(delay)

if __name__ == '__main__':
    lock = RLock()
    ThVDC1 = multiprocessing.Process(name='VDC1', target=FnVDC1, args=(lock,.200))
    ThEEC1 = multiprocessing.Process(name='EEC1', target=FnEEC1, args=(lock,.250))

    ThVDC1.start()
    ThEEC1.start()

所以这两个线程分别以200ms和250ms的间隔调用libCAN.WriteCANMessage。它工作了几秒钟,然后突然停止。原因是什么?解决这个问题的正确方法是什么?我将再添加八个这样的线程。我正在使用Ubuntu操作系统


Tags: nametruelockdefcheck线程delay几秒钟