小编ale*_*use的帖子

使用多处理时克服内存限制

我正在使用进化算法(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)

python multiprocessing

6
推荐指数
1
解决办法
619
查看次数

尽管 ACM 被禁用,Heroku 仍重定向 acme-challenge

我正在尝试按照以下步骤在 Heroku 上设置 Let\'s Encrypt 免费 SSL:https: //github.com/dwyl/learn-heroku/blob/master/SSL-certificate-step-by-step-setup-说明.md

\n\n

我在本地设置了所需的文件并通过以下方式验证它:

\n\n
localhost:3000/.well-known/acme-challenge/<string>\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出看起来不错,它只是一个带有所需字符串的页面。然后我将其推送到 Heroku,部署工作正常。然后我尝试去

\n\n
http://www.<app-name>.com/.well-known/acme-challenge/<string>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我被重定向到一个网页,\n说明:

\n\n
This 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>\n
Run Code Online (Sandbox Code Playgroud)\n\n

仅当当前启用 ACM 时才会发生这种情况,对吗?

\n\n

我为解决此问题而采取的步骤:

\n\n
    \n
  1. 禁用 ACM:heroku certs:auto:disable --app <app-name>. 运行良好,现在如果我再次运行它会说明Your app does not have ACM enabled
  2. \n
  3. 我尝试关闭 Heroku 应用程序并将其置于维护模式。
  4. \n
\n\n

我在用:

\n\n
    \n
  • 业余爱好
  • \n
  • Rails 版本 5.2.3 和 Ruby 2.5.3
  • \n
  • 去吧爸爸
  • \n
\n\n

我的问题: …

ssl ruby-on-rails heroku ssl-certificate lets-encrypt

5
推荐指数
0
解决办法
444
查看次数

linux上的python中的os.system vs subprocess

我有两个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上运行它.有时我使用子进程得到非常奇怪的结果,当第三个脚本一次独立运行时,它无法在网络上找到其他东西.

python linux qsub

4
推荐指数
1
解决办法
9471
查看次数

rails中的to和=>之间有什么区别?

我一直注意到rails社区已经开始使用":"符号表示更多内容.最近我在代码审查中收到了一条评论:

post 'examples/', to: 'examples#index'
Run Code Online (Sandbox Code Playgroud)

比这更好:

post "examples/" => "examples#index"
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 这两个陈述之间有区别吗?
  2. 如果是这样,为什么一个比另一个好?
  3. 为什么rails社区切换到":"符号(或者是它们)?
  4. 继续使用rails 4和很快5,这两种格式仍然可以接受吗?

ruby ruby-on-rails ruby-on-rails-4 ruby-on-rails-5

4
推荐指数
1
解决办法
1963
查看次数

Ruby 四舍五入和十进制数的格式

我已经看过了:为什么十进制数不能用二进制精确表示?为什么是浮点数不准确?

我的问题是,当我使用 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)

ruby floating-point ruby-on-rails rounding

-2
推荐指数
1
解决办法
3537
查看次数