python线程池复制参数

时间:2018-08-26 22:19:05

标签: python multithreading copy pool

我正在学习多线程,并且尝试实现一些了解它的方法。 阅读了几个(非常技术性的主题)后,我找不到解决问题的方法或方法。

基本上,我具有以下结构:

class MyObject():
    def __init__():
        self.lastupdate = datetime.datetime.now()
    def DoThings():
        ...

def MyThreadFunction(OneOfMyObject):
    OneOfMyObject.DoThings()
    OneOfMyObject.lastupdate = datetime.datetime.now()

def main():
    MyObject1 = MyObject()
    MyObject2 = MyObject()
    MyObjects = [MyObject1, MyObject2]

    pool = Pool(2)

    while True:
        pool.map(MyThreadFunction, MyObjects)

if __name__ == '__main__':
    main()

我认为.map函数会复制我的对象,因为它不会更新时间。这样对吗 ?如果是,如何输入对象的全局版本。如果不是,您是否知道为什么时间固定在我的对象中?

当我使用print(MyObject.lastupdate)检查新时间时,时间是正确的,但不在下一个循环中

非常感谢您的任何想法

1 个答案:

答案 0 :(得分:0)

是的,python线程将序列化(实际上是腌制)您的对象,然后在线程中重建它们。但是,它也会将它们发回。要恢复它们,请参见以下代码中的注释补充内容:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.6 10
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 20
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.3 30
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 40