我正在Windows计算机上使用IPython和Spyder IDE。在IDE启动时,会加载一组py文件来定义一些使我的工作更轻松的函数。一切正常。
现在,我想升级这些功能之一以使用多重处理,但是在Windows上,这需要if __name__ == "__main__":
声明。因此,似乎无法直接调用该函数并从IPython控制台传递参数。
例如,其中一个py文件(我们称其为test.py)可能类似于以下代码。
import multiprocessing as mp
import random
import string
# define a example function
def rand_string(length, output):
""" Generates a random string of numbers, lower- and uppercase chars. """
rand_str = ''.join(random.choice(
string.ascii_lowercase
+ string.ascii_uppercase
+ string.digits)
for i in range(length))
output.put(rand_str)
def myFunction():
# Define an output queue
output = mp.Queue()
# Setup a list of processes that we want to run
processes = [mp.Process(target=rand_string, args=(5, output)) for x in range(4)]
# Run processes
for p in processes:
p.start()
# Exit the completed processes
for p in processes:
p.join()
# Get process results from the output queue
results = [output.get() for p in processes]
print(results)
在我的IPython控制台中,我想使用
myFunction()
触发所有计算。但是在Windows上最终会出现BrokenPipe错误。
当我放
if __name__ == "__main__":
myFunction()
在py文件的末尾,然后运行完整的文件
runfile(test.py)
有用。当然。但这使传递参数到函数非常困难,因为我总是必须编辑test.py文件本身。
if __name__ == "__main__":
语句的情况下运行它?因此,我解决了该特定问题。
将的定义放在rand_string
另一个名为的文件中 test2
。
导入test2
为模块插入我的test.py
脚本
import test2 as test2
修改以下行以访问test2
模块
processes = [mp.Process(target=test2.rand_string, args=(5, output)) for x in range(4)]
跑 test.py
呼叫 myFunction()
要开心 :)
该解决方案基于此多处理教程,该教程建议从另一个脚本导入目标函数。此解决方案绕过if __name__
-wrapper的安全自我导入,以访问目标函数。
问题内容: 作为Node.js环境和哲学的新手,我想回答几个问题。我已经下载了Windows安装程序的node.js和节点包管理器.Windows Cmd提示符当前用于运行nodejs应用程序。 cls清除命令窗口或命令提示符中的错误。有node.js的等效项吗?console.clear不存在;(或是否以其他形式存在? 我通过下面的代码创建了一个服务器 我将代码更改为下面的代码,并刷新了浏览器,
我正在使用Eclipse Version:Oxygen.3a发行版(4.7.3a)下的Python3.7.7,希望能够在Eclipse PyDev控制台中运行ipython。 虽然ipython在“Windows->首选项->PyDev->解释器->软件包”下显示为已安装 对于Eclipse中的PyDev控制台来说,它仍然是未知的: windows控制台对此表示: 任何帮助都将不胜感激!
在阅读了这个问题的答案之后,我试着将其放在中。启动(使用),我尝试了别名。他们没有被认出来。 我想知道如何在全局和虚拟环境中设置。
问题内容: 在WSGI中,通过读取类似文件的object来消耗发布数据。如果堆栈中的第二个元素也想要读取发布数据,则在没有其他要读取的内容时,可以通过读取来挂起程序。 我应该如何复制POST数据以便可以多次处理? 问题答案: 去看看WebOb包。它提供的功能允许指定wsgi.input应该可搜索。这样的效果是允许您倒回输入流,以便可以通过不同的处理程序重放内容。即使您不使用WebOb,它的执行方式
问题内容: 本地计算机(PC)上用户界面右上方的下拉菜单: 问题答案: IPython use kernel是一个文件,其中描述了如何启动内核。如果创建自己的内核(远程或其他),则程序运行远程内核并本地绑定到笔记本的端口将由您决定。
我正在使用jhipster,我想在我的WebApp中集成spring批处理管理控制台。(例如http://localhost:8080/batch-console) 我尝试在我的jhipster webapp中集成以下响应,有没有一种方法可以正确地集成spring-batch-admin和spring-boot?但我得到以下错误(属性似乎未加载) Spring Boot版本:1.4.1.发布Jhi