2013-11-20 147 views
-1

我知道PHP现在支持Threads,我读了here Python多线程并不比Java中的多线程更好,因为Python在GIL方面存在一些问题。多线程PHP与多线程Python

因此,我认为Python多线程也不会比在PHP中的多线程技术更好。由于PHP使用像java一样的风格来创建线程,另外php使用pthread来实现线程,这是广泛流行的库。

你有什么建议?

+0

您是否要求提供语言建议?与往常一样,答案是“使用最适合您的项目的任何东西”。如果你必须让线程不受GIL限制,那么不要使用Python。 – Kevin

+0

Java与这个问题有什么关系? –

+0

如果python线程不比java更好,所以我认为python线程也不比php更好。 –

回答

-2

Python确实拥有Global Interpreter Lock。这意味着您不能使用线程在同一台机器上的多个内核上传播一个程序。但是,在多核上运行相同的程序并不是线程设计的目的,而且这样做并不容易。但是,您可以使用multiprocessing模块在多个内核上分发程序,所以这没什么大不了的。

我不知道PHP是否有GIL,但正如你在上面看到的,它并不重要。

即使PHP的线程略优于Pythons,这也是选择PHP的一个不好的理由。事实上,除了“我没有选择”之外几乎任何理由都是一个不好的理由。 Ref1Ref2

+0

“你不能使用线程”并不严格地使用多个内核。 GIL意味着没有两个内核可以同时在主CPython的解释器代码中执行。但是,即使使用带有线程的GIL,您仍然会看到一些工作负载的一些好处。但是,正如您所说,多处理模块(自2.6版起在标准库中)是最好的方法。请注意,CPython的某些C /二进制扩展(例如Numpy)是为了释放GIL并拥有自己的多线程支持而编写的。所以一些计算工作负载也可以从多个内核中受益。 –