我正试图掌握pythons多处理模块,特别是apply_async方法Pool.我正在尝试使用参数和关键字参数调用函数.如果我在没有kwargs的情况下调用函数就可以了,但是当我尝试添加一个关键字参数时,我得到:
TypeError: apply_async() got an unexpected keyword argument 'arg2'
下面是我正在运行的测试代码
#!/usr/bin/env python
import multiprocessing
from time import sleep
def test(arg1, arg2=1, arg3=2):
sleep(5)
if __name__ == '__main__':
pool = multiprocessing.Pool()
for t in range(1000):
pool.apply_async(test, t, arg2=5)
pool.close()
pool.join()
Run Code Online (Sandbox Code Playgroud)
如何调用该函数以使其接受关键字参数?
我正在尝试根据系统发育树中的尖端标签来排序数据帧的行.我要这样做的方法是使用match类似于这个问题的答案的函数,但是我被卡住了因为如果你使用函数重新排序节点tip.label,apephylo对象的属性不会改变ladderize.
library(ape)
tree <- read.tree(text = "(((A,B),(C,D)),E);")
tree2 <- ladderize(tree, right = FALSE)
tree$tip.label
#> [1] "A" "B" "C" "D" "E"
tree2$tip.label
#> [1] "A" "B" "C" "D" "E"
Run Code Online (Sandbox Code Playgroud)
请注意,tip.label即使树的可视化表示没有改变,它的顺序也没有改变.在这个简单的例子中,ladderize函数之后树的视觉顺序是E A B C D(在绘图后从树的底部到顶部读取).如何获取tip.label向量的副本,其中顺序反映树中节点的新顺序?
在perl/python中,DBI API有一种机制可以在参数中安全地插入sql查询.例如在python中我会这样做:
cursor.execute("SELECT * FROM table WHERE value > ?", (5,))
Run Code Online (Sandbox Code Playgroud)
其中execute方法的第二个参数是要添加到sql查询中的参数元组
R的DBI兼容API是否有类似的机制?我见过的例子从未显示传递给查询的参数.如果不是,在参数中插入查询最安全的方法是什么?我特意看着使用RPostgresSQL.
我正在尝试以编程方式将列名称传递给函数,以便可以在dplyr中选择它们.列名称会有所不同,所以我尝试使用select函数的标准评估版本select_.列名称本身有点搞笑,因为它们包含+和-字符,我认为这会导致问题.下面是一个复制错误的简单示例.
library(tibble)
library(dplyr)
data <- data_frame(target_id = 'xyz',
`CH4+Sulfate-1` = 1.2,
`CH4+Sulfate-2` = 2,
`CH4+Sulfate-3` = 3)
columns <- c('CH4+Sulfate-1', 'CH4+Sulfate-2', 'CH4+Sulfate-3')
select_(data, .dots = columns)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Error in eval(expr, envir, enclos) : object 'CH4' not found
Run Code Online (Sandbox Code Playgroud)
这让我相信这些名字正在被评估,而不是被视为字符串.如何在不重命名表的列的情况下解决此问题?
我有一个字符串,我希望能够从它的中间取出一个子字符串。例如,对于字符串 'abcdefg' 我想得到 'cde'(但确切的开始和停止可能是任意的)。我已经找到allButFirst:并allButLast:发送消息,因此我可以分两步完成,例如
str := 'abcdefg'
(str allButFirst: 2) allButLast: 2
Run Code Online (Sandbox Code Playgroud)
但我期待有一条消息。我也尝试过使用from:to:(这对我来说很天真),但这不适用于 string 类。
Pharo 9 Smalltalk 中是否有一条消息可以获取子字符串的开始和停止或开始和长度?
我正在尝试从存储在 JSON 文件中的外部定义创建类。我可以使用如下消息轻松创建一个类:
name := 'SomeNewClass'
Object subclass: name asSymbol
instanceVariableNames: ''
classVariableNames: ''
package: 'SomeNew-Package'.
Run Code Online (Sandbox Code Playgroud)
第一个工作正常,但是如果我再次运行我的代码,它会失败,因为该类已经存在。我一直在寻找,但我不知道如何检查类是否存在,如果存在则将其删除?
我在 Pharo 中初始化类变量时遇到问题。我首先创建一个具有单个类变量的类:
Object subclass: #ClassVariableTestBehavior
instanceVariableNames: ''
classVariableNames: 'test'
package: 'DummyPackage'
Run Code Online (Sandbox Code Playgroud)
然后在课堂上,我创建了initialize一条消息并将变量设置为 nil。
ClassVariableTestBehavior class >>> initialize
test := nil
Run Code Online (Sandbox Code Playgroud)
我保存然后创建了一个实例方法:
ClassVariableTestBehavior >>> test
^ test
Run Code Online (Sandbox Code Playgroud)
并再次返回并将类方法更改为:
ClassVariableTestBehavior class >>> initialize
test := 34
Run Code Online (Sandbox Code Playgroud)
然后在操场上,我打印了以下结果:
ClassVariableTestBehavior new test.
Run Code Online (Sandbox Code Playgroud)
这是nil. 为什么类变量的值没有更新为 34?
如何在 Pharo 9 中编写带有换行符的字符串文字?我尝试了以下操作,但他们都没有插入新行:
a := 'paragraph1\n\nparagraph2'.
a := 'paragraph1\\n\\nparagraph2'.
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一方法是通过像这样的串联:
a := 'paragraph' ,
(String with: Character cr with: Character cr),
'new paragraph' ,
(String with: Character cr with: Character cr)
Run Code Online (Sandbox Code Playgroud)
有没有更简单(更短)的方法来做到这一点?
我基本上想做这个问题的反面.我已经分裂有两个矩阵np.tril或者np.triu,我想他们重新组合成一个矩阵.
A = array([[ 0. , 0. , 0. ],
[ 0.1, 0. , 0. ],
[ 0.6, 0.5, 0. ]])
B = array([[ 0. , 0.4, 0.8],
[ 0. , 0. , 0.3],
[ 0. , 0. , 0. ]])
Run Code Online (Sandbox Code Playgroud)
而我希望它看起来像是
array([[ 0. , 0.4, 0.8],
[ 0.1, 0. , 0.3],
[ 0.6, 0.5, 0. ]])
Run Code Online (Sandbox Code Playgroud)
是否有一个内置的numpy函数来做到这一点?