Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中同时运行多个方法_Python - Fatal编程技术网

在Python中同时运行多个方法

在Python中同时运行多个方法,python,Python,我试图运行一个方法,其中有一个无限循环,以创建一个视频显示。这个方法在处理硬件输入的另一个循环中调用,因此不能像视频那样快速循环,如果我使用外部循环运行视频,会导致延迟。有没有办法启动视频循环,然后启动硬件循环并分别运行它们?当前,如果我调用视频循环,它将一直处于该循环,直到它返回。是的,您可以使用Python自己的模块或类似的协作微线程模块 请注意,Python的线程机制附带了针对CPython的免责声明(大多数框上的默认Python实现): 由于全局解释器锁,在CPython中,一次只能有一

我试图运行一个方法,其中有一个无限循环,以创建一个视频显示。这个方法在处理硬件输入的另一个循环中调用,因此不能像视频那样快速循环,如果我使用外部循环运行视频,会导致延迟。有没有办法启动视频循环,然后启动硬件循环并分别运行它们?当前,如果我调用视频循环,它将一直处于该循环,直到它返回。

是的,您可以使用Python自己的模块或类似的协作微线程模块

请注意,Python的线程机制附带了针对CPython的免责声明(大多数框上的默认Python实现):

由于全局解释器锁,在CPython中,一次只能有一个线程执行Python代码(即使某些面向性能的库可能会克服此限制)。如果您希望应用程序更好地利用多核计算机的计算资源,建议您使用
多处理
。但是,如果您希望同时运行多个I/O绑定任务,线程仍然是合适的模型


根据您调用的底层模块的运行方式,您可能会发现,在使用
线程时,一个线程不会经常放弃控制权(如果有的话)。在这种情况下,使用协作微线程可能是您唯一的选择。

是的,您可以使用Python自己的模块,或类似的协作微线程模块

请注意,Python的线程机制附带了针对CPython的免责声明(大多数框上的默认Python实现):

由于全局解释器锁,在CPython中,一次只能有一个线程执行Python代码(即使某些面向性能的库可能会克服此限制)。如果您希望应用程序更好地利用多核计算机的计算资源,建议您使用
多处理
。但是,如果您希望同时运行多个I/O绑定任务,线程仍然是合适的模型


根据您调用的底层模块的运行方式,您可能会发现,在使用
线程时,一个线程不会经常放弃控制权(如果有的话)。在这种情况下,使用协作微线程可能是您唯一的选择。

是的,您可以使用Python自己的模块

请注意,多处理不必与GIL抗争,并且可以为您赋予它的所有任务同时工作


另一方面,多处理模块有一个警告,当您生成一个进程时,它是一个完全独立的python解释器。所以它不仅仅是一个操作系统控制的线程。这本身就是一个完全不同的过程。这可能会增加程序的开销,但完全避开GIL的优点使这只是一个轻微的问题。

是的,您可以使用Python自己的模块

请注意,多处理不必与GIL抗争,并且可以为您赋予它的所有任务同时工作


另一方面,多处理模块有一个警告,当您生成一个进程时,它是一个完全独立的python解释器。所以它不仅仅是一个操作系统控制的线程。这本身就是一个完全不同的过程。这可能会增加程序的开销,但完全避开GIL的优势使这只是一个轻微的问题。

很抱歉,我不得不删掉你的第一行:d对不起,我不得不删掉你的第一行:DYup,这也行得通。但是值得注意的是,您必须使用的通信机制变成了跨进程而不是跨线程,因此不像共享对象那么简单,因为每个进程都有自己的堆。是的,这也可以工作。但是值得注意的是,您必须使用的通信机制变成了跨进程而不是跨线程,因此不像共享对象那样简单,因为每个进程都有自己的堆。