Python 和线程与 PyPy?
Python and Threads with PyPy?
我在 python 中有一个 kivy 应用程序,它使用了一些线程。
由于全局解释器锁 python 无法 运行 不同内核上的这些线程,我想尝试使用 PyPy 看看如果我可以使不同内核的线程 运行 更快,因为 PyPy 是不同的并且提供 stackless (那是什么?:) .
是否有人可以分享一些关于如何制作简单 python 程序的信息,该程序通过模块 threading
、运行 pypy 解释器启动一些线程,这样它使用这个 stackless 功能?
Pypy 不会每次都解决 运行 单线程的 Python 问题,因为它也使用了 GIL - http://doc.pypy.org/en/latest/faq.html#does-pypy-have-a-gil-why
除此之外,Kivy 是一个嵌入 Python 本身的复杂项目——虽然我不太了解它,但我怀疑是否可以将其中使用的 Python 切换为 Pypy。
根据您正在做的事情,您可能希望使用 multiprocessing
模块而不是 threading
- 它是一个直接替代品,可以对 [= 进行透明的进程间调用24=] 函数,因此可以利用多核。
https://docs.python.org/3/library/multiprocessing.html
这是 cPython 中的标准,并且可能在 Kivy 中使用,if(且仅当)子进程中的所有代码只处理数字-crunching 等等,所有用户交互和显示更新都在主进程上进行。
我在 python 中有一个 kivy 应用程序,它使用了一些线程。 由于全局解释器锁 python 无法 运行 不同内核上的这些线程,我想尝试使用 PyPy 看看如果我可以使不同内核的线程 运行 更快,因为 PyPy 是不同的并且提供 stackless (那是什么?:) .
是否有人可以分享一些关于如何制作简单 python 程序的信息,该程序通过模块 threading
、运行 pypy 解释器启动一些线程,这样它使用这个 stackless 功能?
Pypy 不会每次都解决 运行 单线程的 Python 问题,因为它也使用了 GIL - http://doc.pypy.org/en/latest/faq.html#does-pypy-have-a-gil-why
除此之外,Kivy 是一个嵌入 Python 本身的复杂项目——虽然我不太了解它,但我怀疑是否可以将其中使用的 Python 切换为 Pypy。
根据您正在做的事情,您可能希望使用 multiprocessing
模块而不是 threading
- 它是一个直接替代品,可以对 [= 进行透明的进程间调用24=] 函数,因此可以利用多核。
https://docs.python.org/3/library/multiprocessing.html
这是 cPython 中的标准,并且可能在 Kivy 中使用,if(且仅当)子进程中的所有代码只处理数字-crunching 等等,所有用户交互和显示更新都在主进程上进行。