首页 > 解决方案 > Python对同一类的方法使用多处理

问题描述

我需要一些关于 python 多处理模块的帮助。我正在使用 Python3.6.6。我的代码结构有点像这样:

class ABC():
    def __init__(self):
        self.HOST = 'hostserver.com'
        self.TCP_PORT = 0123
        self.BUFFER_SIZE = 1024
        self.SERVER_INFO = ""
        self.SOCK = None

    def connect_socket(self):
        self.SOCK = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.SOCK.settimeout(1)
        self.SOCK.connect((self.HOST, self.TCP_PORT))
        self.SOCK.setblocking(True)

    def recTask(self):
        while True:
            self.receive_data()
            time.sleep(0.01)

    def sendTask(self):
        while True:
            self.SOCK.sendall(bytes)
            print("\n*Message sent*\n")
            time.sleep(0.01)


if __name__ == '__main__':

    Class_obj = ABC()
    id = Class_obj.connect_socket()
    ts = mp.Process(name='send_Process', target=Class_obj.sendTask())
    ts.daemon = True    
    tr = mp.Process(name='rec_Process', target=Class_obj.recTask())
    tr.daemon = True
    tr.start()
    ts.start()
    ts.join()
    tr.join()

我可以使用进程中的对象调用同一类的方法吗?我希望这两个功能彼此独立运行。此外,当我运行它时,我只看到正在打印“已发送消息”。在 receive_data() 函数中,我有 print("Message received") 但它从不打印。当我评论代码时

ts = mp.Process(name='send_Process', target=Class_obj.sendTask())
ts.daemon = True
ts.start()

我看到正在打印“收到消息”。有什么我想念的吗?

标签: python-3.xmultiprocessingpython-object

解决方案


推荐阅读