茱莉亚的多线程系统是建立在任务之上的。我可以创建一个异步任务,它总是运行在使用@async生成它的线程上。我可以创建一个可以使用Threads.@spawn在任何线程上运行的任务。或者,我可以使用for将整个Threads.@threads for ...循环分割成所有可用的线程。
我怎样才能把一项任务放到我选择的特定线程上--那不是创建它的那个线程?
我希望能够以矢量化的方式将一个元组分割成一个函数。例如,如果我有以下函数,
function foo(x, y)
x + y
end
和下面的元组数组
args_array = [(1, 2), (3, 4), (5, 6)]
然后,我可以使用列表理解来获得所需的结果:
julia> [foo(args...) for args in args_array]
3-element Array{Int64,1}:
3
7
11
但是,我希望能够对此操作使用点向量化表示法:
julia> foo.(args_array...)
ERROR: MethodError: n
我最近刚转到Julia1.1 Version 1.1.0 (2019-01-21),但我认为这也是报道的1.0版中的一个问题。为了总结一个虚拟变量,会出现一个错误:
julia> a = 0.0
0.0
for i in 1:10
a += 1
end
ERROR: UndefVarError: a not defined
现在,强制使用变量的范围:
julia> local a
julia> for i in 1:10
a += 1
end
ERROR: UndefVarError: a not defined
无论执行global
我正在尝试编译以下C++代码
#include <julia.h>
int main(int argc, char *argv[])
{
/* required: setup the julia context */
jl_init(NULL);
/* run julia commands */
jl_eval_string("print(sqrt(2.0))");
/* strongly recommended: notify julia that the
program is about to terminate. this
我知道有几篇文章介绍了如何在以前的julia版本中清除工作区和变量。 但是,我使用的是Julia v"1.0.3“和Atom的最新更新。我还有最新版本的Julia "1.1.0“ 不过,我已经试过了 x=49
workspace()
clear!(:x)
# and even
clearconsole() # working but just clear the concle
Control + l # working but just clear the concle 他们中没有一个人为我清除了变量。同样,workspace()和clear!(:x)返回错误消息 ERRO
我想从我的python代码中调用一个julia脚本。pyjulia没有问题,但是如果我把它设计成一个类,就会有一个问题。我想初始化julia并在init函数中包含一个脚本。下面的例子是,我不能在函数中使用self.jul。它引发一个错误,因为self.jul没有函数"myJulFuntion“。我确信它在朱莉娅脚本中,因为如果我把东西从init移到callJulFunc并调用jl.myJulFuntion(params),它就能工作。
有什么想法吗?
问题是,
import julia
julia.Julia()
from julia import Main as jl
class
我想在Python脚本中运行Julia文件。Julia文件是 func1.jl using LowRankApprox
using LinearAlgebra
function f(A)
F = pqrfact(A)
M = A * F[:P]
return M
end
function k(A)
F = pqrfact(A)
k = F[:k]
return k
end 这段代码在Atom中工作得很好。但我需要它在Python脚本中工作。我的Python脚本是: import numpy as np
import ju
从0.6开始,可以使用where语法在Julia中创建参数化方法。根据版本,where语法
可以在接受类型的任何地方使用。
现在考虑以下人为的示例:
function (rng::R)() where {R <: Range}
return first(rng)
end
当我试图编译它时,会出现以下错误:
ERROR: function type in method definition is not a type
那么,我的问题是,在Julia 0.6+中创建参数函子的正确方法是什么?
在Julia中,什么等同于Python的getattr()?我尝试了下面的元编程代码,但它只能在全局范围内工作,而不能在函数范围内工作。
type A
name
value
end
a = A("Alex",1)
for field in fieldnames(a)
println(eval(:(a.$field)))
end
这将打印出来:
Alex
1
但是,如果上面的代码在一个函数作用域内,那么它就不会工作
function tmp()
a = A("Alex",1)
for field in fieldnames(a)
我有一个在T类型上参数化的抽象容器AbstractContainer,它指示容器中的内容的类型。然后,每个子类型(在本例中为FloatContainer)指定容器中的实际内容(在本例中为Float64)。 理想情况下,如果只有容器类型,我会有一种方法来获取容器中的类型。这样我就可以在另一个结构中使用它(在这个例子中是MultiplyBy) 我在考虑用类似于Julia的内部eltype函数的方式来做这件事,但是我不能让它工作。我总是得到一个方法错误(有关详细的错误消息,请参阅最后的代码片段) abstract type AbstractContainer{T} end
gettype(::
在x = Any[[1,2],[2,3],[3,4],[4,5]]中,我使用Julia0.4.0尝试了下面的一行
x[ x .== [3,4] ]
但是它导致了一个错误
ERROR: DimensionMismatch("arrays could not be broadcast to a common size")
我希望它能给出类似Any[ [3,4] ]的东西,因为
x[3] == [3,4] # => true
没问题。虽然此操作本身可能并不有用,但我想知道错误消息意味着什么。因此,我希望有任何提示,为什么会发生这个错误。
在Julia v0.6中,简单的代码:
julia> struct A
x::Int = 1
end
生成此错误:
ERROR: syntax: "x::Int=1" inside type definition is reserved
这是一个非常难以捉摸的信息:保留给什么?
->,我必须明白,这种定义在将来的朱莉娅版本中是允许的吗?
下面的代码为我创建了一个分段错误--这是一个错误吗?如果是,在哪个组件中?
using DataFrames
function test()
Threads.@threads for i in 1:50
df = DataFrame()
df.foo = 1
end
end
test()
(需要启动朱莉娅并支持多线程以使其工作,如JULIA_NUM_THREADS=50; julia)
只有当迭代/线程的次数足够高(例如50次)时,它才会产生分段错误。对于较低的数量,它只是零星地/从不这样做。
我的环境:
julia> versioninf
我使用PyJulia在Python语言中运行Julia文件。我要运行的文件使用了一个已经安装在Julia上的包。但它仍然会给出以下错误: JULIA: LoadError: ArgumentError: Package LowRankApprox not found in current path: Run `import Pkg; Pkg.add("LowRankApprox")` to install the LowRankApprox package. 如果这个包已经安装在Julia上了,为什么还要给出这个错误呢?
我正在学习julia (v1.6),我正在尝试创建一个julia函数,以便从python类(pycall等价物)中运行julia方法,其中该方法是一个打印。
我尝试了不同的事情,得到了不同的错误,要么创建类,要么调用方法或其他错误。
(作为参考)
这是我正在使用的代码。
using PyCall
# Python Class
@pydef mutable struct python_class
function __init__(self, a)
self.a = a
end
# Julia Method embeded in Python Class
主要的问题是,我的变量只有在运行代码之后才能确定(因为变量的数量是不固定的)。 在旧版本的ModelingToolkit.jl中,我使用以下代码来生成变量。 my_var = Variable(Symbol(name))(t) # name is a string 然而,它不能在最新版本中工作。这就是错误。 ERROR: Sym name is not callable. Use @syms name(var1, var2,...) to create it as a callable. 我已经检查了SymbolicUtils.jl,但没有找到其他用法。我如何解决这个问题?