Python 如何在并行环境中同时处理IO和CPU绑定?
是否可以在所有可用CPU上启动多个线程而不是一个?一个示例代码会很好 或者,我可以跨越多个进程,然后在每个进程内创建多线程吗 我正在使用多线程技术,它可以很好地用于我脚本的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上启动多个线程
def worker(url):
extract url (io bound)
process url content (cpu bound)
处理这类工人的有效方法应该是什么
是否可以在所有可用CPU上启动多个线程而不是一个
通常,线程在任何可用的CPU上运行。除非指定了在特定CPU上运行的线程/进程。(操作方式因操作系统而异)
但是,如果您使用的是Python.org(“CPython”)中的Python实现,这并不重要。CPython有一个“全局解释器锁”,强制每次只有一个线程在执行Python字节码。因此,使用线程不会提高CPython的处理性能
因此,对于计算量大的任务,您可能应该使用
多处理
模块在不同的进程中完成。如果对大量数据执行相同的工作,则使用多处理.Pool
通常是一个好主意。基本上不能重复,请查看由于GIL,您必须使用多处理