【发布时间】:2016-07-11 14:06:23
【问题描述】:
我从 Python 中的线程开始,并尝试实现合并排序,在开始时,作业被拆分为 2 个线程。我正在使用collections.deque、itertools.islice、threading.Thread。
我在开始时创建了两个线程,它们正常地完成了一半的工作,然后我加入它们并合并结果。但我注意到 使用两个线程所需的时间比我正常使用时要长得多(几乎是原来的 2 倍)。
这怎么可能? Here is a link to the code,如果需要,我可以在这里复制主要部分(我也在Code Review SE 上发布了这个问题,我宁愿保持这个简短)
它是否链接到this 问题(在C++ 中似乎是一个类似的问题)?非常感谢。
【问题讨论】:
-
为什么投反对票?
-
虽然 CPython 的 GIL 限制了多线程,但你仍然可以使用
multiprocessing。 -
@EliKorvigo - 假设至少需要一些共享内存,即使在多处理时这是否仍然是个问题?
-
@rcgldr
multiprocessing有一些使用起来很痛苦的低级共享内存原语,但 GIL 不是问题。
标签: python multithreading performance sorting mergesort