Python中的多处理,共享对象

时间:2018-06-22 13:38:47

标签: python sockets multiprocessing

我已经编写了一个python程序,该程序使用多处理功能来向字典中填充数据,并且在为获取和设置数据而创建的同一类中,我还具有其他函数(API)。我正在使用多处理管理器字典来处理在线程之间传递字典,但是无法跨对象发送对象。

为了“设置”数据,我需要生成一个字符串并将其通过套接字发送。套接字是在线程中创建的,但是我想在set函数中使用相同的套接字,但是由于某种原因,我收到一个错误,无法将套接字对象存储在Manager词典中,因此我可以共享它们。

我在 init 中使用了self.socket,但是由于线程永远不会结束,因此self.socket不能在任何地方使用,因为线程从未返回过。有人知道我可以在类中的函数之间传递对象的方法吗?

这是一个简单的表示形式:

 class abc:
    def __init__(self):
        self.socket = ""
        manager = Manager()
        self.d = manager.dict()

    def popData(self, d):
        self.socket = socket creation (multiple steps)
        d[1] = self.socket #this is where the error occurs

        populateData.....
        d[0] = populate data #I can pass this around

   def setData(self,d,data):
        d[1].send(str(data))   #this is what I want to send but d[1] is not a socket object

0 个答案:

没有答案