问题:由于python使用“ GIL”,python是否能够同时运行其单独的线程?
信息:
看完这篇文章后,我对python是否能够利用多核处理器的不确定性产生了怀疑。尽管python做得很好,但认为它缺乏如此强大的功能实在是很奇怪。因此,我感到不确定,因此决定在这里提问。如果我编写的是多线程程序,它是否可以在多个内核上同时执行?
答案是“是,但是…”
但是当您使用常规线程进行并发时,cPython不能。
您可以使用或之类的东西multiprocessing
,celery
也mpi4py
可以将并行工作拆分为另一个进程。
或者,您可以使用Jython或IronPython之类的东西来使用没有GIL的替代解释器。
一种较软的解决方案是使用不会在GIL上运行的库来执行繁重的CPU任务,例如numpy
可以在不保留GIL的情况下进行繁重的工作,因此可以继续使用其他python线程。您也可以通过ctypes
这种方式使用库。
如果您不进行CPU限制工作,则可以完全忽略GIL问题(有点),因为python在等待IO时不会获取GIL。
问题内容: 我可以使用一台可以访问10个内核的机器-我想实际使用它们。我习惯在自己的机器上做的事情是这样的: 我要执行10个文件-我们将其称为blah00.fa,blah01.fa,… blah09.fa。 这种方法的问题在于,myProgram一次仅使用1个内核,并且在多核计算机上这样做,我将一次使用10个内核,因此我不会使用mahcine来其最大能力。 如何更改脚本,以使其同时运行所有10个.
问题内容: 有人可以提供解释,说明当JVM仅是Linux上的单个进程时,Java多线程程序(例如Tomcat servlet容器)如何能够使用CPU的所有内核?有没有很好的深入文章详细介绍了该主题? 编辑#1 :我不是在寻找有关如何在Java中实现多线程程序的建议。我正在寻找有关JVM如何在Linux / Windows上内部管理以使用多个内核而仍是OS上的单个进程的解释。 编辑#2 :我设法找到
问题内容: 我在集群上使用Keras和Tensorflow后端(创建神经网络)。我如何在群集上(在多个内核上)以多线程方式运行它,还是Keras自动完成此操作?例如,在Java中,可以创建多个线程,每个线程在一个内核上运行。 如果可能,应使用多少个内核? 问题答案: Tensorflow会自动在一台计算机上在尽可能多的内核上运行计算。 如果您有分布式集群,请确保按照https://www.tens
我是爱奥尼亚的新手,如果我的问题很愚蠢,请原谅我。在开发过程中,我使用浏览器来显示和测试我的应用程序,一切都正常工作,没有任何问题,但是当我在android设备上的Ionic DevApp上测试我的应用程序时,应用程序无法与后端通信(REST API)。每次我发送请求(如登录请求)时,系统都会响应。 console.log显示错误信息: 我的申请: 前端:离子角 后端(RESTAPI):JavaS
问题内容: 我在计算机上安装了两个版本的Python(版本2.6和2.5)。我想为一个项目运行2.6,为另一个项目运行2.5。 如何指定要使用的商品? 我正在使用Windows XP SP2。 问题答案: 运行不同的Python副本就像启动正确的可执行文件一样容易。您提到您只是通过键入从命令行启动python实例。 这在Windows下的作用是拖移环境变量,检查可执行文件,批处理文件(),命令文件
本文向大家介绍哪一个 bash 内置命令能够进行数学运算。相关面试题,主要包含被问及哪一个 bash 内置命令能够进行数学运算。时的应答技巧和注意事项,需要的朋友参考一下 答案: bash shell 的内置命令 let 可以进行整型数的数学运算。 #! /bin/bash … … let c=a+b … …