我试图说服一个S4方法使用一个表达式作为参数,但我总是得到一个错误返回.一个简单的例子,说明了我在这里尝试做的事情:
setGeneric('myfun',function(x,y)standardGeneric('myfun'))
setMethod('myfun',c('data.frame','expression'),
function(x,y) transform(x,y) )
Run Code Online (Sandbox Code Playgroud)
如果我现在尝试:
> myfun(iris,NewVar=Petal.Width*Petal.Length)
Error in myfun(iris, NewVar = Petal.Width * Petal.Length) :
unused argument(s) (NewVar = Petal.Width * Petal.Length)
> myfun(iris,{NewVar=Petal.Width*Petal.Length})
Error in myfun(iris, list(NewVar = Petal.Width * Petal.Length)) :
error in evaluating the argument 'y' in selecting a method for
function 'myfun': Error: object 'Petal.Width' not found
Run Code Online (Sandbox Code Playgroud)
如果我理解正确的话,似乎参数已经在通用中进行了评估.所以将表达式传递给方法似乎至少是棘手的.是否有可能使用表达式的S4调度方法?
编辑:改为变换,因为它是一个更好的例子.
我想知道我可以在GPU上发送的线程/线程组的"网格".我正在使用Direct Compute,所以我将使用该API给出一个具体的例子.例如,如果我调用Dispatch(2,2,2),我理解它总共调度2x2x2 = 8个线程组.但是,如果我调用Dispatch(8,1,1),它还调度8x1x1 = 8个线程组,那有什么区别?有任何性能差异吗?
PS与GPU上的线程相同的问题.在计算(.hlsl)文件中声明的numthreads(2,2,2)和numthreads(8,1,1)之间的区别是什么?
任何帮助,将不胜感激.
我是 ES6 和高级 javascript 新手。我见过使用 axios http 客户端的代码示例,如下所示:
axios.xxx(...).then((res) => dispatch(success(res)) , (err)=> dispatch(error(err)))
Run Code Online (Sandbox Code Playgroud)
而我正在做:
axios.xxx(...).then(function(res){...}).catch(function(err){...});
Run Code Online (Sandbox Code Playgroud)
我尝试在 MDN 上查找调度,但只找到了 DispatchEvent...这不一样吗?我问这个问题是因为虽然我的代码可以工作,但我发现我的 api 中的 http 错误代码(如 403 等)被 axios 作为错误处理,而我更喜欢自己在应用程序中处理它们。(更新:当我向这个问题添加调度标签时,我看到了含义的简短摘要,但我仍然很困惑)。
使用调度的原因或优点是什么?“dispatch()”是 axios、ES6 或 Nodejs 的一部分吗?谢谢。
我的S4类有一个多次调用的方法.我注意到执行时间比独立调用类似函数时要慢得多.所以我在我的类中添加了一个带有"function"类型的插槽,并使用该函数而不是方法.下面的示例显示了两种执行此操作的方法,它们都比相应的方法运行得快得多.此外,该示例表明该方法的较低速度不是由于必须从类中检索数据的方法,因为即使它们也这样做,功能也更快.
当然,这种做事方式并不理想.我想知道是否有办法加速方法调度.有什么建议?
setClass(Class = "SpeedTest",
representation = representation(
x = "numeric",
foo1 = "function",
foo2 = "function"
)
)
speedTest <- function(n) {
new("SpeedTest",
x = rnorm(n),
foo1 = function(z) sqrt(abs(z)),
foo2 = function() {}
)
}
setGeneric(
name = "method.foo",
def = function(object) {standardGeneric("method.foo")}
)
setMethod(
f = "method.foo",
signature = "SpeedTest",
definition = function(object) {
sqrt(abs(object@x))
}
)
setGeneric(
name = "create.foo2",
def = function(object) {standardGeneric("create.foo2")}
)
setMethod(
f = "create.foo2",
signature = "SpeedTest",
definition = function(object) { …Run Code Online (Sandbox Code Playgroud) 使用python3.4.在这里我想使用singledispatch在__mul__方法中调度不同类型.像这样的代码:
class Vector(object):
## some code not paste
@functools.singledispatch
def __mul__(self, other):
raise NotImplementedError("can't mul these type")
@__mul__.register(int)
@__mul__.register(object) # Becasue can't use Vector , I have to use object
def _(self, other):
result = Vector(len(self)) # start with vector of zeros
for j in range(len(self)):
result[j] = self[j]*other
return result
@__mul__.register(Vector) # how can I use the self't type
@__mul__.register(object) #
def _(self, other):
pass # need impl
Run Code Online (Sandbox Code Playgroud)
正如你可以看到代码,我想要支持Vector*Vertor,这有名称错误
Traceback (most recent call last):
File "p_algorithms\vector.py", line …Run Code Online (Sandbox Code Playgroud) 在Swift 3中,创建了一个DispatchQueue实例:
DispatchQueue(label: String,
qos: DispatchQoS,
attributes: DispatchQueue.Attributes,
autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency,
target: DispatchQueue?)
Run Code Online (Sandbox Code Playgroud)
我看到来自StackOverFlow的示例代码,它可以是nil,.global()或.main,这个target参数的含义是什么?
我猜.main意味着队列将在主线程上运行,但是.nil或.global()是什么?
我刚刚发现FileReader调度事件就像它是一个DOM元素一样.是吗?我想知道是否有可能创建一个类似于FileReader的对象,它没有HTML/XML结构中的表示,但可以调度事件?
我一直在使用谷歌的Analytics SDK v2beta3并且一切正常,但是当应用程序离开活动状态时我无法手动调度.(fyi,对于我的应用程序,我需要预留电池电量,所以我只使用'[[GAI sharedinstance] dispatch]'来在用户完成应用程序时发送我的事件数据.)
我已经尝试了几件事,但是在跟踪调度到达并在跟踪期间运行时,它似乎没有做任何事情......没有日志输出(我打开了调试模式)并且没有上传数据.它应该最低限度报告 "Google分析2.0b3 - [GAIDispatcher initiateDispatch:retryNumber:]没有未决命中(GAIDispatcher.m:479)DEBUG." 或者我会想到的那种东西.但是日志中没有任何内容,也没有发送数据.
相反,当应用程序从后台恢复时,会发送匹配,然后我会在控制台上看到所有调试语句,数据会成功发送到我的Google Analytics帐户.
以下是我的代码......
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
// set up Google Analytics tracker
[GAI sharedInstance].trackUncaughtExceptions = YES; // automatically track uncaught exceptions with Google Analytics - sent with stack trace.
[GAI sharedInstance].dispatchInterval = -1; // set Google Analytics dispatch off, will do manually when app goes into background.
[GAI sharedInstance].debug = YES; // set debug to YES for extra debugging information.
id<GAITracker> tracker = [[GAI sharedInstance] …Run Code Online (Sandbox Code Playgroud) 我在WPF应用程序中的后台工作者中意识到了一些奇怪的东西.
我现在想要完成的是等到BW完成另一个线程.
检查以下代码:
if (bw.IsBusy)
{
bw.CancelAsync();
System.Threading.ThreadStart WaitThread =
new System.Threading.ThreadStart(delegate() {
while (bw.IsBusy)
{
System.Threading.Thread.Sleep(100);
}
bw.RunWorkerAsync();
});
System.Windows.Application.Current.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Normal,
WaitThread); // if I remove this line, bw fires RunWorkerAsyncEvent
}
else
{
bw.RunWorkerAsync();
}
Run Code Online (Sandbox Code Playgroud)
请注意,我添加了一个Dispatcher.Invoke,等到bw不忙,但如果我调用它并且从不触发RunWorkerAsyncCompleted事件,则所有时间都很忙.虽然,如果我删除该行,FIRES事件,这真的很奇怪.
我怎么能等到bw结束?
我的iOS应用程序中有Apple Apple App Store的链接,我试图将这些作为事件进行跟踪.
问题是我们无法让我的应用程序在进入后台之前正确发送GA事件.我们正在使用iOS SDK v2beta4.
以下是我们使用的代码的概述.您可以看到我们已经提供了许多我称之为"保险单"的代码,因为我们认为正确的方法是行不通的.但即使是保险政策代码并不总是在我的应用程序进入后台之前发送事件.它只能在大约50%的时间内工作,剩下的时间我必须返回应用程序才能发送事件.
我们认为正确的方法是在"applicationDidEnterBackground"中调度事件,并通过"beginBackgroundTaskWithExpirationHandler"向iOS请求额外的时间来执行此操作.我们在没有"保险单"代码的情况下自己尝试了这段代码.至少我相信我们正确地评论了每一行保险代码.
注意我们设置全局变量UIBackgroundTaskIdentifier bgTask; 在带有代码的AppDelegate.h头文件中
UIBackgroundTaskIdentifier bgTask;
Run Code Online (Sandbox Code Playgroud)
以下是我们认为正确执行此操作的代码:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[[GAI sharedInstance] dispatch];
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
Run Code Online (Sandbox Code Playgroud)
上面的代码是我们认为应该起作用但不起作用的.注意:App Store不是通常的应用程序,而是应用程序中的一个网站,如果它有所作为.
作为一项保险政策,我们做了一些其他的事情,大约50%的时间派遣事件:
在设置了跟踪的函数中立即调用第一个[[GAI sharedInstance] dispatch]
源代码:
- (IBAction)goToAppStore:(id)sender
{
...
// Tracking
// Using events (pressing on buttons)
id <GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
[tracker sendEventWithCategory:@"App Checkout"
withAction:@"Checkout Button Pressed"
withLabel:nameApp.text …Run Code Online (Sandbox Code Playgroud) google-analytics objective-c dispatch grand-central-dispatch ios
dispatch ×10
ios ×2
r ×2
s4 ×2
axios ×1
c# ×1
class ×1
dispatcher ×1
dom ×1
events ×1
expression ×1
filereader ×1
gpu ×1
javascript ×1
node.js ×1
objective-c ×1
python ×1
python-3.4 ×1
queue ×1
swift ×1
threadgroup ×1
types ×1
wpf ×1