Multithreading 在Python程序中设计并发性
我正在设计一个大型项目,我想我看到了一种方法,可以通过利用多核来大幅提高性能。然而,我在多处理方面没有任何经验,我有点担心我的想法可能不是好的 创意 该程序是一款视频游戏,程序性地生成大量内容。由于一次生成的内容太多,因此程序会尝试在需要之前生成所需内容,并花费大量精力来预测在不久的将来需要什么以及该未来有多近。因此,整个程序是围绕任务调度器构建的,任务调度器获取传递的函数对象,并附加一些元数据,以帮助确定它们应该按什么顺序处理,并按该顺序调用它们 动机 似乎应该很容易让这些函数在它们自己的进程中并发执行。但是查看多处理模块的文档让我重新考虑——似乎没有任何简单的方法在线程之间共享大型数据结构。我忍不住想象这是故意的 问题 因此,我想我需要知道答案的基本问题是:Multithreading 在Python程序中设计并发性,multithreading,python-3.x,concurrency,python-multithreading,Multithreading,Python 3.x,Concurrency,Python Multithreading,我正在设计一个大型项目,我想我看到了一种方法,可以通过利用多核来大幅提高性能。然而,我在多处理方面没有任何经验,我有点担心我的想法可能不是好的 创意 该程序是一款视频游戏,程序性地生成大量内容。由于一次生成的内容太多,因此程序会尝试在需要之前生成所需内容,并花费大量精力来预测在不久的将来需要什么以及该未来有多近。因此,整个程序是围绕任务调度器构建的,任务调度器获取传递的函数对象,并附加一些元数据,以帮助确定它们应该按什么顺序处理,并按该顺序调用它们 动机 似乎应该很容易让这些函数在它们自己的进程
return
语句时终止
然后,UI注册玩家现在确实单击了一个星,并查找它需要在其代表性精灵被单击的星对象上显示的数据。如果数据在那里,它将显示它;如果没有,UI将显示一条消息,要求玩家等待,并继续重复尝试访问必要的属性在成功之前,对星形对象进行复制。即使您的问题看起来非常复杂,但有一个非常简单的解决方案。您可以隐藏使用代理在进程之间共享对象的所有复杂内容 基本思想是创建一个管理器来管理所有应该在进程间共享的对象。然后,该管理器创建自己的进程,等待其他进程指示它更改对象
import multiprocessing as m
manager = m.Manager()
starsdict = manager.dict()
process = Process(target=yourfunction, args=(starsdict,))
process.run()