小编MRo*_*lin的帖子

Clojure中的死简单Fork-Join并发

我有两个独立的昂贵功能.我想并行运行它们.我不想处理期货等(我是Clojure的新手,很容易混淆).

我正在寻找一种同时运行两个函数的简单方法.我想让它像以下一样工作

(defn fn1 [input] ...) ; costly
(defn fn2 [input] ...) ; costly

(let [[out1 out2] (conc (fn1 x) (fn2 y))] ...)
Run Code Online (Sandbox Code Playgroud)

我希望这返回一个带有一对输出的向量.它应该只在两个线程终止后才返回.理想的conc应适用于任意数量的输入.我怀疑这是一个简单的模式.

concurrency future clojure

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

查询以列出Datomic中的所有分区

列出Datomic数据库的所有分区的查询是什么?

这应该回来了

[[:db.part/db] [:db.part/tx] [:db.part/user] .... ]
Run Code Online (Sandbox Code Playgroud)

....所有用户定义的分区在哪里.

database clojure datomic

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

如何将 Dask Dataframe 转换为 Dask Array?

我有一个 dask 数据框对象,但想要一个 dask 数组。我该如何实现这个目标?

python numpy pandas dask

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

JavaScript 可以与不同的服务器通信吗?

JavaScript 可以与位于不同服务器上的数据库交互吗?

即涉及三台计算机

  • 服务器:提供带有 JavaScript 的 HTML 页面
  • 客户端:运行想要与之交谈的页面
  • 第二个服务器:向客户端发送数据或从客户端接收数据

这是否违反同源政策?如果不是为什么不呢?如果是这样,有办法解决吗?

我的背景 - 我是一名称职的计算机科学家,但我从未处理过客户端编程。在回答时,请随意使用复杂的想法,但请假设我对 JavaScript 语言或客户端编程背后的具体策略一无所知。

javascript ajax client-server client-side

5
推荐指数
1
解决办法
2687
查看次数

在远程分支上运行`git log`

我想要git loggit存储库的输出,但我不想克隆整个存储库.

即我想要在语义上像下面这样的东西

git log git@github.com:username/reponame.git

如果有办法做到这一点,我也想要同样的 git whatchanged

如果github为此提供了一个简单的解决方案,我愿意将自己限制为只在github上托管的git存储库.

git github

5
推荐指数
2
解决办法
9084
查看次数

Pandas中的按位运算会返回数字而不是bool?

如何在Pandas中执行按位运算?

如何&处理整数

在整数上,&运算符执行按位掩码

>>> mask = 0b1100  # 4 and 8 bits on
>>> 7 & mask
4
Run Code Online (Sandbox Code Playgroud)

如何&在熊猫中运作

有没有办法在Pandas中执行按位屏蔽操作?该&运营商做别的事情.

>>> df = DataFrame([1, 2, 3, 4, 5, 6, 7, 8], columns=['data'])
>>> df.data & mask
0    False
1    False
2    False
3     True
4     True
5     True
6     True
7     True
Name: data, dtype: bool
Run Code Online (Sandbox Code Playgroud)

python bit-manipulation pandas

5
推荐指数
1
解决办法
4737
查看次数

Microbenchmark Clojure功能

小Clojure的功能有多快assoc?我怀疑它assoc在100ns到3us范围内工作,这使得它很难计时.

运用 time

user=> (def d {1 1, 2 2})
#'user/d
user=> (time (assoc d 3 3))
"Elapsed time: 0.04989 msecs"
{1 1, 2 2, 3 3}
Run Code Online (Sandbox Code Playgroud)

显然有很多开销,所以我不相信这个基准.朋友们向我指出了Criterium,它处理了很多基准测试的痛苦(多次评估,预热JVM,GC请参见如何在Clojure中对功能进行基准测试?).

运用 Criterium

可悲的是,在如此小的基准上,即使是Criterium也似乎失败了

user=> (use 'criterium.core)
nil
user=> (def d {1 1 2 2})
#'user/d
user=> (bench (assoc d 3 3))
WARNING: JVM argument TieredStopAtLevel=1 is active, and may lead to unexpected results as JIT C2 compiler may not be active. See http://www.slideshare.net/CharlesNutter/javaone-2012-jvm-jit-for-dummies. …
Run Code Online (Sandbox Code Playgroud)

benchmarking clojure

5
推荐指数
2
解决办法
580
查看次数

Python的file.write是原子的吗?

file.write原子操作在Python或C?

考虑以下两个线程

线程1

with open('foo', 'a') as f:
    f.write('123456')
Run Code Online (Sandbox Code Playgroud)

线程2

with open('foo', 'a') as f:
    f.write('abcdef')
Run Code Online (Sandbox Code Playgroud)

我们保证不会像以下一样得到混合文本吗?

1a2b3c4d5e6f
or 
123abc456def
Run Code Online (Sandbox Code Playgroud)

而是得到两个可能的正确结果之一

123456abcdef
abcdef123456
Run Code Online (Sandbox Code Playgroud)

请注意,在每个线程中都有一次写入调用,显然原子多次写入需要某种锁定.我也知道基于文件的锁.这个问题的理想答案是肯定/不带证据/文件.

python concurrency multithreading locking

5
推荐指数
1
解决办法
507
查看次数

在没有加速FFT的情况下增加占用率

问题

我必须计算许多傅里叶变换.我想与我的许多内核并行执行这些操作.请注意,我不想要并行FFT算法,我只想发布许多令人尴尬的并行FFT.

我发现,当我的CPU使用率上升时,我的完成时间不会减少.

我们创建一些随机数据

In [1]: import numpy as np

In [2]: x = np.random.random(10000000)  # some random data
Run Code Online (Sandbox Code Playgroud)

并计算一次计算FFT的时间和计算一次FFT所需的时间.

In [3]: %time _ = np.fft.rfft(x)        # cost of one run
CPU times: user 589 ms, sys: 23.9 ms, total: 612 ms
Wall time: 613 ms

In [4]: %time _ = np.fft.rfft(x)        # there is some speedup from mulitple runs
CPU times: user 365 ms, sys: 12.4 ms, total: 378 ms
Wall time: 381 ms
Run Code Online (Sandbox Code Playgroud)

我们按顺序在一系列数据上运行它

In [5]: %time …
Run Code Online (Sandbox Code Playgroud)

python multithreading numpy fft scipy

5
推荐指数
1
解决办法
125
查看次数

如何在新的 Python 进程中设置环境变量

我正在使用"spawn"多处理上下文在 Python 中创建一个新进程

import multiprocessing
ctx = multiprocessing.get_context("spawn")

proc = ctx.Process(target=my_func)
proc.start()
Run Code Online (Sandbox Code Playgroud)

我希望这个过程有一组环境变量。理想情况下,我会在创建流程时指定这一点,如下所示:

proc = ctx.Process(target=my_func, environment={"MY_NAME": "MY_VALUE"})
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?我希望 Python 运行时执行此操作,以便我可以确保在我的任何 Python 代码运行之前设置这些环境变量。

python environment-variables python-multiprocessing

5
推荐指数
1
解决办法
290
查看次数