我正在学习多线程,并且尝试实现一些了解它的方法。 阅读了几个(非常技术性的主题)后,我找不到解决问题的方法或方法。
基本上,我具有以下结构:
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)检查新时间时,时间是正确的,但不在下一个循环中
非常感谢您的任何想法
答案 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