Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 如何在并行环境中同时处理IO和CPU绑定?_Python_Python 2.7_Python Multiprocessing_Python Multithreading_Concurrent.futures - Fatal编程技术网

Python 如何在并行环境中同时处理IO和CPU绑定?

Python 如何在并行环境中同时处理IO和CPU绑定?,python,python-2.7,python-multiprocessing,python-multithreading,concurrent.futures,Python,Python 2.7,Python Multiprocessing,Python Multithreading,Concurrent.futures,是否可以在所有可用CPU上启动多个线程而不是一个?一个示例代码会很好 或者,我可以跨越多个进程,然后在每个进程内创建多线程吗 我正在使用多线程技术,它可以很好地用于我脚本的IO端。但是,我的脚本计算成本也很高,因此我希望在多个CPU上启动多个线程 我的代码流: def worker(url): extract url (io bound) process url content (cpu bound) 处理这类工人的有效方法应该是什么 是否可以在所有可用CPU上启动多个线程

是否可以在所有可用CPU上启动多个线程而不是一个?一个示例代码会很好

或者,我可以跨越多个进程,然后在每个进程内创建多线程吗

我正在使用多线程技术,它可以很好地用于我脚本的IO端。但是,我的脚本计算成本也很高,因此我希望在多个CPU上启动多个线程

我的代码流:

def worker(url):
    extract url (io bound)  
    process url content (cpu bound)
处理这类工人的有效方法应该是什么

是否可以在所有可用CPU上启动多个线程而不是一个

通常,线程在任何可用的CPU上运行。除非指定了在特定CPU上运行的线程/进程。(操作方式因操作系统而异)

但是,如果您使用的是Python.org(“CPython”)中的Python实现,这并不重要。CPython有一个“全局解释器锁”,强制每次只有一个线程在执行Python字节码。因此,使用线程不会提高CPython的处理性能


因此,对于计算量大的任务,您可能应该使用
多处理
模块在不同的进程中完成。如果对大量数据执行相同的工作,则使用
多处理.Pool
通常是一个好主意。

基本上不能重复,请查看由于GIL,您必须使用多处理