小编tad*_*man的帖子

多处理:仅使用物理内核?

我有一个foo消耗大量内存的功能,我希望并行运行几个实例.

假设我有一个带有4个物理内核的CPU,每个内核都有两个逻辑内核.

我的系统有足够的内存来容纳4个foo并行实例,但不是8个.而且,由于这8个内核中有4个是逻辑的,所以我也不希望使用所有8个内核可以提供超出使用4个物理内核的大量增益只要.

所以,我想运行foo在4个物理内核.换句话说,我想确保执行multiprocessing.Pool(4)(4是由于内存限制而在此计算机上可以容纳的函数的最大并发运行次数)将作业调度到四个物理内核(例如,不是两个物理核心及其两个逻辑后代的组合.

如何在python中做到这一点?

编辑:

我之前使用过代码示例,multiprocessing但我与库无关,所以为了避免混淆,我删除了它.

python linux parallel-processing python-multiprocessing

15
推荐指数
3
解决办法
9855
查看次数

ActiveRecord :: Base不属于从ActiveRecord降序的层次结构

我正在尝试创建一个Rails插件.在大多数情况下,我所写的作品.然而,关联存在问题.当我尝试调用关联时,我收到此错误:

ActiveRecord::Base doesn't belong in a hierarchy descending from ActiveRecord
Run Code Online (Sandbox Code Playgroud)

目前,插件看起来像这样:

module ControlledVersioning
  module ActsAsVersionable
    extend ActiveSupport::Concern

    included do
      has_many :versions, as: :versionable

      after_create :create_initial_version
    end

    module ClassMethods
      def acts_as_versionable(options = {})

        cattr_accessor :versionable_attributes
        self.versionable_attributes = options[:versionable_attributes]
      end
    end

    private
    def create_initial_version
      version = versions.create
    end
  end
end

ActiveRecord::Base.send :include, ControlledVersioning::ActsAsVersionable
Run Code Online (Sandbox Code Playgroud)

同样,每当我尝试调用关联时,都会触发错误消息.我在after_create回调中使用了调试器并尝试运行:

> versions.create
*** ActiveRecord::Base doesn't belong in a hierarchy descending from ActiveRecord

> versions
*** ActiveRecord::Base doesn't belong in a hierarchy descending from ActiveRecord

> Version.new …
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails

13
推荐指数
1
解决办法
1343
查看次数

默认情况下,为rubygems 1.8.x禁用rdoc和ri生成

这个问题有很多答案可以在旧版本的rubygems下工作,但是Rubygems 1.8.x的推荐程序是什么?我有一个/etc/gemrc看起来像这样的文件:

gem: --no-rdoc --no-ri
Run Code Online (Sandbox Code Playgroud)

在任何期间似乎都忽略了这些选项gem install.

更新:

在做了一些挖掘之后,似乎问题与rvm哪个分区不仅仅是各种版本的ruby,还有它们的相关配置文件有关.要检查配置文件的位置,请使用irb:

require 'rubygems'
Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE
# => "/opt/local/rvm/rubies/ruby-1.9.2-p180/etc/gemrc"
Run Code Online (Sandbox Code Playgroud)

ruby rubygems

12
推荐指数
1
解决办法
2085
查看次数

捆绑安装/在rails上安装libv8(3.3.10.4)时出错(在Lion上运行)

我在我的gem文件中添加了gem'sunkpot_rails'并运行了bundle install.我在安装libv8时遇到错误,错误信息如下:

Installing libv8 (3.3.10.4) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /opt/local/bin/ruby extconf.rb 
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/opt/local/bin/ruby
extconf.rb:13: uninitialized constant Gem (NameError)
Checking for Python...

Gem files will remain installed in /Users/sonyakim/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.3.10.4 for inspection.
Results …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

12
推荐指数
1
解决办法
2万
查看次数

自从引入协议类以来,抽象基类是否是多余的?

我正在学习如何使用 Python 3.8 ( PEP 544 )中引入的协议类。

因此,typing.Protocol类是 的子类,ABCMeta并且它们的处理方式就像抽象类一样,并且具有允许使用结构子类型的额外好处。我试图思考现在我会使用什么抽象基类,但我却一片空白。

与 ABC 相比,协议类有哪些缺点(如果有)?也许它们的性能会受到影响?是否有任何特定情况表明 ABC 仍然是最佳选择?

python duck-typing

12
推荐指数
1
解决办法
1107
查看次数

"PHP Composer"与"Ruby Gems and Bundler"相比

(首先,这个问题不是"哪个更好"的问题.我只想知道它们是如何相似的,并且在功能方面有所不同.)

我是php开发人员,目前正在学习ruby.在这些日子里,鼓励许多php开发人员使用Composer依赖管理.在提问之前,我想首先验证我的知识.

根据我的理解,

  • Composer 是一个用于php库(或包)的依赖管理工具.
  • Composer每个项目基础安装php库(所谓的本地).我的意思是为project1安装的php库不能重新用于project2而不再为project2安装.

我注意到Ruby也有非常好的依赖管理工具" RubyGems".据我所知,

  • " RubyGems"是"宝石"的包管理器.
  • " Gem"是以标准格式打包的Ruby程序或库,用于共享.(Rails也是一个宝石.)
  • Gem可以通过这样的命令安装gem install sinatra.
  • 但是,也有所谓的" Bundler",它也是为应用程序捆绑宝石的宝石.
  • 当命令bundle install运行时(在特定的ruby项目目录下),将为此ruby项目安装Gemfile中列出的所有gem.

所以,我的问题在这里.

  1. Composer类似于是否RubyGems还是Bundler
  2. 运行时gem install sinatra,是否在系统级别安装?
  3. 运行时bundle install,是否在本地(仅在此项目上)或系统级别安装Gems?
  4. 如果我需要两个版本的一个gem(例如sinatra)用于不同的项目,我应该如何处理?

(对不起,我的问题很长.如果我的理解有问题,请再次抱歉,请指出正确的.)

php ruby gem bundler composer-php

10
推荐指数
1
解决办法
1639
查看次数

使用DataMapper时找不到_mysql_init

我有一个简单的MySQL表:

% mysql -u rampion dev -e 'describe person'
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | UNI | NULL    | auto_increment |
| uid   | varchar(256) | NO   | PRI | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

我想运行一个简单的DataMapper脚本:

# temp.rb
require 'rubygems'
require 'datamapper'

DataMapper::Logger.new($stdout, :debug)
DataMapper.setup(:default, "mysql://rampion@localhost/dev")

class Person
  include DataMapper::Resource
  property :id,     Serial
  property :uid,    String
end

DataMapper.finalize

p Person.first_or_create(:uid => 'Steve')
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我得到动态链接器错误:

% ruby …
Run Code Online (Sandbox Code Playgroud)

ruby mysql datamapper

9
推荐指数
1
解决办法
404
查看次数

自制大小的酒窖

试图在我的系统空间不足的情况下进行清理,我在我的Cellar目录中找到了4个自制软件.我不确定酒窖做了什么工作.它只是一个我可以安全删除的缓存,还是实际使用的那些文件?

macos homebrew

9
推荐指数
2
解决办法
2918
查看次数

Ruby中的Fibers有什么意义?

我不明白如下:

counts = Hash.new(0)

File.foreach("testfile") do |line|
  line.scan(/\w+/) do |word|
    word = word.downcase
    counts[word] += 1
  end
end

counts.keys.sort.each {|k| print "#{k}:#{counts[k]} "}
Run Code Online (Sandbox Code Playgroud)

比这更糟糕的是:

words = Fiber.new do
  File.foreach("testfile") do |line|
    line.scan(/\w+/) do |word|
      Fiber.yield word.downcase
    end
  end
end

counts = Hash.new(0)

while word = words.resume
  counts[word] += 1
end

counts.keys.sort.each {|k| print "#{k}:#{counts[k]} "}
Run Code Online (Sandbox Code Playgroud)

ruby multithreading ruby-on-rails fibers

8
推荐指数
1
解决办法
1220
查看次数

为什么我的 C++ 函数只有放在 main() 之后才不起作用?

我最近学习了 C++ 并决定尝试制作一个函数。但是,我的函数遇到了一个问题func(),即使事先声明,它也只有放在main()函数之前才有效。

如果我把它放在main()函数之后,系统会告诉我“没有匹配的函数可以调用func”。

注意:func2另一方面,即使放在main()函数之前或之后,函数也能工作。

所以这是代码:

#include <stdio.h>
#include <iostream>

void func2();

int func();

int main()
{
  int y=2;

  std :: cout << "Hello World\n" << func(y) << "\n";
  func2();
  return 0;
}

int func(int x)
{
 x *= 2;
 return x;
}

void func2()
{
 std :: cout << "Hello there";
}
Run Code Online (Sandbox Code Playgroud)

c++ program-entry-point function

8
推荐指数
2
解决办法
198
查看次数