我正面临一个应该易于解决的问题,但我觉得我在黑暗中轻拍。我正在编写一个简单的框架,其中包含以下类:
首先是一个算法类,它只包含数值过程:
<video src="media/bunny.mp4" width="400" height="222" controls poster="media/bunny.jpg"></video>
然后,有一个项目类,它包含文件,实用程序和状态信息的路径。 Worker类子类QRunnable:
class Algorithm(object):
.
.
.
@staticmethod
def calculate(parameters):
#do stuff
return result
在Manager类中,进程已启动
class Worker(QRunnable):
def __init__(self,item,*args,**kwargs):
self.item = item
def run(self,*args,**kwargs):
result = Algorithms.calculate(items.parameter)
item.result = result
现在问题:这样做之后我注意到两件事:
我找不到很多文件,所以我哪里出错?
一切顺利 Twerp
答案 0 :(得分:1)
最常见的Python(CPython)实现的一个限制是它的解析器使用Global Interpreter Lock,这意味着一次只有一个线程可以解析Python字节。多个Python线程可以同时执行基于C的Python子例程,并且多个Python线程可以同时等待I / O,但不能让它们同时执行Python代码。因此,在多线程处理CPU绑定的Python程序时,通常不会看到任何加速。常见的解决方法是生成子进程而不是线程(因为每个子进程将使用自己的Python解释器副本,它们不会相互干扰),或者重写部分或全部Python程序另一种没有这种限制的语言。