我正在使用进化算法(CMAES)进行函数优化.为了更快地运行它我正在使用多处理模块.我需要优化的函数(input_A_Opt, and input_B_Opt)在下面的代码中将大矩阵作为输入.
它们是几GB的大小.当我在没有多处理的情况下运行该函数时,它运行良好.当我使用多处理时,内存似乎有问题.如果我使用小输入运行它运行良好,但当我使用完整输入运行时,我收到以下错误:
File "<ipython-input-2-bdbae5b82d3c>", line 1, in <module>
opt.myFuncOptimization()
File "/home/joe/Desktop/optimization_folder/Python/Optimization.py", line 45, in myFuncOptimization
**f_values = pool.map_async(partial_function_to_optmize, solutions).get()**
File "/usr/lib/python3.5/multiprocessing/pool.py", line 608, in get
raise self._value
File "/usr/lib/python3.5/multiprocessing/pool.py", line 385, in _handle_tasks
put(task)
File "/usr/lib/python3.5/multiprocessing/connection.py", line 206, in send
self._send_bytes(ForkingPickler.dumps(obj))
File "/usr/lib/python3.5/multiprocessing/connection.py", line 393, in _send_bytes
header = struct.pack("!i", n)
error: 'i' format requires -2147483648 <= number <= 2147483647
Run Code Online (Sandbox Code Playgroud)
这里是代码的简化版本(再次,如果我使用输入10倍的输入运行它,一切正常):
import numpy as np
import cma
import multiprocessing as mp
import functools
import myFuncs
import …Run Code Online (Sandbox Code Playgroud) 我正在尝试按照以下步骤在 Heroku 上设置 Let\'s Encrypt 免费 SSL:https: //github.com/dwyl/learn-heroku/blob/master/SSL-certificate-step-by-step-setup-说明.md
\n\n我在本地设置了所需的文件并通过以下方式验证它:
\n\nlocalhost:3000/.well-known/acme-challenge/<string>\nRun Code Online (Sandbox Code Playgroud)\n\n输出看起来不错,它只是一个带有所需字符串的页面。然后我将其推送到 Heroku,部署工作正常。然后我尝试去
\n\nhttp://www.<app-name>.com/.well-known/acme-challenge/<string>\nRun Code Online (Sandbox Code Playgroud)\n\n我被重定向到一个网页,\n说明:
\n\nThis va-acm.heroku.com page can\xe2\x80\x99t be found No webpage was found for the web address: https://va-acm.heroku.com/challenge?host=www.<app-name>.com&token=<string>\nRun Code Online (Sandbox Code Playgroud)\n\n仅当当前启用 ACM 时才会发生这种情况,对吗?
\n\n我为解决此问题而采取的步骤:
\n\nheroku certs:auto:disable --app <app-name>. 运行良好,现在如果我再次运行它会说明Your app does not have ACM enabled我在用:
\n\n我的问题: …
我有两个python脚本.第一个脚本调用第二个脚本的表,我需要在其中执行第三方python脚本.它看起来像这样:
# the call from the first script.
cmd = "qsub -sync y -b -cwd -V -q long -t 1-10 -tc 5 -N 'script_two' ./script2.py"
script2thread = pexpect.spawn(cmd)
# end of script 1
Run Code Online (Sandbox Code Playgroud)
所以我在这里发送10个工作到队列.在脚本2中,我有一个基于task_id的case语句.在每一个中,我使用不同的参数对第三方脚本进行类似的调用.
...
elif(task_id == 4)
subprocess.call(./script3)
# or
os.system(./script3 , shell=True)
Run Code Online (Sandbox Code Playgroud)
这是我的问题所在.使用其中一个是否有差异/好处?我知道在Windows上使用一个而不是另一个因为支持问题而产生很大的不同但是我在Linux上并且无意在Windows上运行它.有时我使用子进程得到非常奇怪的结果,当第三个脚本一次独立运行时,它无法在网络上找到其他东西.
我一直注意到rails社区已经开始使用":"符号表示更多内容.最近我在代码审查中收到了一条评论:
post 'examples/', to: 'examples#index'
Run Code Online (Sandbox Code Playgroud)
比这更好:
post "examples/" => "examples#index"
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我已经看过了:为什么十进制数不能用二进制精确表示?而为什么是浮点数不准确?
我的问题是,当我使用 ruby 对浮点数进行舍入和格式化时,结果仍然与进行数学运算的结果不同。下面是一个例子:
编辑 2
[28] pry(main)> #####################################
[29] pry(main)> # test one
[30] pry(main)> #####################################
[31] pry(main)> foo = (6.0135 * (650000 / 1000))
=> 3908.7749999999996
[32] pry(main)> foo = '%.2f' % foo.round(2)
=> "3908.77"
[33] pry(main)> # should be 3908.78
[36] pry(main)> #####################################
[37] pry(main)> # test two
[38] pry(main)> #####################################
[39] pry(main)> foo = 650000 / 1000
=> 650
[40] pry(main)> foo = foo * 6.0135
=> 3908.7749999999996
[41] pry(main)> foo = '%.2f' …Run Code Online (Sandbox Code Playgroud)