- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
新年快乐!
我是 Python 新手 multiprocessing
模块。为了更好地理解 apply_async
有效,我在下面写下了简短的脚本。除非我将第二行注释掉( get_ipython().magic('reset -sf')
),否则脚本会挂起。
有人可以告诉我为什么会这样吗?我正在使用 Spyder IDE 在 Python 3.5 下工作。
我使用 IPython 魔术 %reset 的原因是因为我想在运行我的脚本之前清除所有变量,我阅读了 this webpage IPython 魔术 %reset 等同于 clear all
来自 Matlab/Octave。
在此先感谢您的帮助!
from IPython import get_ipython
get_ipython().magic('reset -sf')
import random
import multiprocessing
def stakhanov(chunk_idx):
data=random.randint(1,10) # create random integer between 1 and 10:
frame_idx=chunk_idx
return (frame_idx,data)
def stakhanov_finished(result):
(frame_idx,data)=result
DATA_READ[frame_idx]=data
def start_multiprocess_io():
pool = multiprocessing.Pool(NUM_PROCESSES) # create pool of all processes:
chunk_idx = 0
for i in range(NUM_PROCESSES):
pool.apply_async(stakhanov,args=(chunk_idx,),callback=stakhanov_finished)
chunk_idx += 1
pool.close()
pool.join()
if __name__ == '__main__':
global NUM_PROCESSES, DATA_READ
NUM_PROCESSES = multiprocessing.cpu_count() # number of CORES
DATA_READ = [None for _ in range(NUM_PROCESSES)] # declare list
start_multiprocess_io()
最佳答案
好的,我不知道 get_ipython.magic
是什么call 确实如此,但是在没有人这样做的情况下,让我们看看多处理在 Windows 上是如何工作的,以及为什么这行:
get_ipython().magic('reset -sf')
if __name__ == '__main__'
下测试你以后有。
multiprocessing.Process
或
Pool
例如,
multiprocessing
模块为新进程生成一个额外的 Python 实例。这和Linux类似,只是没有
fork
所以它不能复制当前进程。这个新生成的进程是一个全新的、新鲜的、空的 Python。
def get_command_line():
'''
Returns prefix of command line used for spawning a child process
'''
if getattr(process.current_process(), '_inheriting', False):
raise RuntimeError('''
Attempt to start a new process before the current process
has finished its bootstrapping phase.
This probably means that you are on Windows and you have
forgotten to use the proper idiom in the main module:
if __name__ == '__main__':
freeze_support()
...
The "freeze_support()" line can be omitted if the program
is not going to be frozen to produce a Windows executable.''')
if getattr(sys, 'frozen', False):
return [sys.executable, '--multiprocessing-fork']
else:
prog = 'from multiprocessing.forking import main; main()'
opts = util._args_from_interpreter_flags()
return [_python_exe] + opts + ['-c', prog, '--multiprocessing-fork']
if getattr(sys, 'frozen', False):
return ([sys.executable, '--multiprocessing-fork'] +
['%s=%r' % item for item in kwds.items()])
else:
prog = 'from multiprocessing.spawn import spawn_main; spawn_main(%s)'
prog %= ', '.join('%s=%r' % item for item in kwds.items())
opts = util._args_from_interpreter_flags()
return [_python_exe] + opts + ['-c', prog, '--multiprocessing-fork']
multiprocessing
导入一个模块。并在该模块中运行一个函数。函数,
main()
或
spawn_main()
,从创建它的进程(您的进程)加载一些信息,以找出运行的程序。
import multiprocessing
并调用
freeze_support
,如果您使用的是卡住的 Python。这是
if getattr(sys, 'frozen', False)
的第一个分支测试:这里正在解决的问题是
-c 'from multiprocessing ...'
选项在卡住的 Python 中不起作用。 (如果你没有使用卡住的 Python,
-c
行会处理大多数事情。)
main
或
spawn_main
,它连接回您的 Python 进程,即您自己启动的那个。从您的 Python 中,新的 Python 获取原始主模块的名称,并将其导入。
import
导入它(嗯,有一个特殊的稍微修改过的导入,并且细节再次因 Python 版本而有所不同)。这意味着
__name__
不是
__main__
而是
main
或
program
或任何您命名的
main.py
文件。这允许多处理代码访问您的整个程序。
pickle
系统处理的,这就是为什么你只能运行可以腌制的函数,传递可以腌制的参数。)已经设置了原始 Python 和正在运行的新 Python 之间所需的所有通信进程,新的 Python 现在可以调用该函数,让它做它的事情,当它返回时,让新的 Python 进程终止。
import main
或 import prog
或任何使您的原始程序加载的东西,其可执行代码受使用 if __name__
的测试保护。 .这可以确保该代码——你的程序的主要工作——不会在衍生的子 Python 中运行。相反,只有
multiprocessing.main
或
multiprocessing.spawn_main
实际运行。主程序中的所有内容都被导入和定义,因此一旦它们的名称通过酸洗代码出现,所有函数都可以被调用。但是它们都没有运行。
Process
所需的设置序列时,您可以违反此规则 1 并运行特定的代码。实例。根据这里看到的问题,这似乎很清楚,
get_ipython.magic('reset -sf')
打破设置顺序。
sys.path
插入导入某些代码的位置。
关于python - 为什么使用 IPython 魔术 %reset 清除变量空间时 pool.join() 会挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48053355/
我有一个网站,我正在通过学校参加比赛,但我在清除 float 元素方面遇到了问题。 该网站托管在 http://www.serbinprinting.com/corey/development/
我有一个清除按钮,需要使用 JQuery 函数清除该按钮单击时的 TextBox 值(输入的)。 最佳答案 您只需将单击事件附加到按钮即可将输入元素的值设置为空。 $("#clearButton").
我们已经创建了一个保存到 CoreData 然后同步到 CloudKit 的 iOS 应用程序。在测试中,我们还没有找到一种方法来清除应用程序 iCloud 容器中的数据(用于用户私有(private
这是一个普遍的问题,也是我突然想到并且似乎有道理的问题。我看到很多人使用清除div 并且知道这有时不受欢迎,因为它是额外的标记。我最近开始使用 因为它接缝代表了它的实际用途。 当然都引用了:.clea
我有两个单选按钮。如果我检查第一个单选按钮下面的数据将填充在组合框中。之后我将检查另一个单选按钮,我想清除组合框值。 EmployeeTypes _ET = new EmployeeTypes(
我一直在玩 Canvas ,我正在尝试制作一个可以移动和跳跃的正方形,移动部分已经完成,但是跳跃部分有一个问题:每次跳跃时它都会跳得更快 here's a jsfiddle 这是代码: ///////
我该如何在 Dart 上做到这一点? 抓取tbody元素后,我想在其上调用empty(),但这似乎不存在: var el = query('#search_results_tbody'); el.em
我需要创建一个二维模拟,但是在设置新的“框架”时,旧的“框架”不会被清除。 我希望一些圆圈在竞技场中移动,并且每个循环都应删除旧圆圈并生成新圆圈。一切正常,但旧的没有被清除并且仍然可见,这就是我需要改
无论我使用set statusline将状态行更改为什么,我的状态行都不会改变。看起来像 ".vimrc" 39L, 578C
在 WPF 应用程序中,我有一个 ListView 绑定(bind)到我的 ViewModel 上的一个 ObservableCollection。 在应用程序运行期间,我需要删除并重新加载集合中的所
我有一个大型程序,一个带有图形的文本扭曲游戏。在我的代码中的某处,我使用 kbhit() 我执行此代码来清除我的输入缓冲区: while ((c = getchar()) != '\n' && c !
我正在将所有网站的页面加载到主索引页面中,并通过将 href 分成段并在主域名后使用 .hash 函数添加段来更新 URL 显示,如下所示: $('a').click(function(event)
我有一个带有 的表单和 2 控件来保存和重置表单。我正在触发 使用 javascript __doPostBack()函数并在其中传递一个值 __EVENTARGUMENT如果面板应该重置。 我的代
我目前有一堆 UIViewController,每个都是在前一个之上呈现的模式 ViewController。我的问题是我不需要一堆 UIViewController,我只需要最后一个。因此,当出现新
我在一个类中有一些属性方法,我想在某个时候清除这个属性的缓存。 示例: class Test(): def __init__(self): pass @property
在此Test Link我试图将标题和主站点导航安装到博客脚本的顶部。 我清除:两者;在主要网站脚本上工作,但现在把所有东西都扔到了一边。尝试了无数次 fixex 都没有成功!提前感谢 Ant 指点解决
我似乎无法正确清除布局。看this 我无法阻止左栏中的元素向下推右栏中的元素。谁能帮忙? Screenshot with some pointy arrows (死链接) 最佳答案 问题标记/样式似
我希望能够在某个类 (sprite-empos) 之后清除 '' 中的内容,想知道是否有不添加任何新类或不使用 js 的方法(我在下面尝试过不工作)? 为了明确它是“985”,我想在某个视口(view
我想清除ptr_array boost::ptr_array a; ... a.clear(); // missing 如何清理 ptr 容器? 最佳答案 它应该表现得像一个数组,您不能在 C++
这是我使用多 map 制作的一个简单的事件系统;当我使用 CEvents::Add(..) 方法时,它应该插入并进入多重映射。问题是,当我触发这些事件时, multimap 似乎是空的。我确定我没有调
我是一名优秀的程序员,十分优秀!