小编F.X*_*.X.的帖子

Scala中的异步IO与期货

假设我从一些URL下载了一个(可能很大的)图像列表.我正在使用Scala,所以我要做的是:

import scala.actors.Futures._

// Retrieve URLs from somewhere
val urls: List[String] = ...

// Download image (blocking operation)
val fimages: List[Future[...]] = urls.map (url => future { download url })

// Do something (display) when complete
fimages.foreach (_.foreach (display _))
Run Code Online (Sandbox Code Playgroud)

我对Scala有点新意,所以对我来说这看起来仍然有些神奇:

  • 这是正确的方法吗?任何替代品,如果不是?
  • 如果我要下载100个图像,这会一次创建100个线程,还是会使用线程池?
  • 最后一条指令(display _)是否会在主线程上执行,如果没有,我该如何确定呢?

谢谢你的建议!

io multithreading scala future

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

在Matplotlib中绘制两个图之间的线

我正在使用Matplotlib绘制两个子图,主要是:

subplot(211); imshow(a); scatter(..., ...)
subplot(212); imshow(b); scatter(..., ...)
Run Code Online (Sandbox Code Playgroud)

我可以在这两个子图之间画线吗?我该怎么办?

python matplotlib

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

强制Android模拟器将更改存储到/ system

我知道在使用Android模拟器时这是一个经常出现的问题,但有没有办法强制模拟器接受持久性更改/system

仿真器基于QEMU,因此理论上应该可以强制system图像以相同的方式运行userdata(例如),但我不熟悉QEMU如何处理事情.有什么指针吗?

android emulation

22
推荐指数
3
解决办法
2万
查看次数

iOS和ARC:如何在异步操作期间保留self?

这是我第一次摆弄iOS5和ARC.到目前为止,这么好,它有效,但我遇到了某种问题.

我有一个自定义UIStoryboardSegue,我使用Facebook Connect(或其他服务)将用户登录到我的应用程序.简而言之,它应该做到以下几点:

  1. 用户点击按钮
  2. 按钮点燃了Segue
  3. segue启动异步登录,但不会立即推送视图控制器
  4. 如果且仅当登录成功时,segue才会推送视图控制器

相反,是登录开始,但是在有机会完成之前,ARC会立即释放segue.

我想到了一个快速的黑客来阻止这个:

@interface BSLoginSegue() {
    __strong BSLoginSegue *_retained_self;
}
@end

// Stuff...
// Other stuff...

- (void) perform {
    login();
    _retained_self = self;
}

- (void) loginServiceDidSucceed:(BSLoginService *)svc {
    ...
    _retained_self = nil;
}
Run Code Online (Sandbox Code Playgroud)

问题是,它真的一个黑客,所以我想知道是否还有其他更优雅的方式我可以做同样的事情?

objective-c ios automatic-ref-counting

17
推荐指数
2
解决办法
4278
查看次数

绘制大量线条时的HTML画布性能

我正在编写一个显示很多的应用程序,我的意思是,在HTML5画布上有很多2D路径(由数百个,数千个小段组成).通常,几百万点.这些点从服务器下载到二进制文件中ArrayBuffer.

我可能不会在现实世界中使用那么多点,但我对如何提高性能感兴趣.如果你愿意,可以称之为好奇心;)

无论如何,我测试了以下解决方案:

  1. 使用gl.LINESgl.LINE_STRIP使用WebGL,并计算GPU上着色器中的所有内容.目前最快的,可以显示多达10M的细分,而不会在我的Macbook Air上退缩.但是如果你想避免在JavaScript中处理事情,那么对二进制格式有非常严格的限制.

  2. 使用Canvas2D,在一次stroke()调用中绘制一条包含所有段的巨大路径.当我超过100k点时,页面会在画布更新前冻结几秒钟.所以,不在这里工作.

  3. 使用Canvas2D,但使用自己的stroke()调用绘制每个路径.尽管其他人一直在互联网上说,这比在一次调用中绘制所有内容要快得多,但仍然比WebGL慢很多.当我达到约500k段时,事情开始变得糟糕.

两个Canvas2D解决方案需要循环遍历JavaScript中所有路径的所有点,因此这非常慢.您是否知道可以提高JavaScript在ArrayBuffer中的迭代速度或一般处理速度的方法?

但是,奇怪的是,在所有画布绘制调用完成后,屏幕不会立即更新.当我开始达到性能限制时,绘制调用结束和画布更新之间会有明显的延迟.你知道它来自哪里,有没有办法减少它?

html javascript html5 canvas

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

为什么Cython比矢量化NumPy慢?

考虑以下Cython代码:

cimport cython
cimport numpy as np
import numpy as np

@cython.boundscheck(False)
@cython.wraparound(False)
def test_memoryview(double[:] a, double[:] b):
    cdef int i
    for i in range(a.shape[0]):
        a[i] += b[i]

@cython.boundscheck(False)
@cython.wraparound(False)
def test_numpy(np.ndarray[double, ndim=1] a, np.ndarray[double, ndim=1] b):
    cdef int i
    for i in range(a.shape[0]):
        a[i] += b[i]

def test_numpyvec(a, b):
    a += b

def gendata(nb=40000000):
    a = np.random.random(nb)
    b = np.random.random(nb)
    return a, b
Run Code Online (Sandbox Code Playgroud)

在解释器中运行它(在几次运行后预热缓存):

In [14]: %timeit -n 100 test_memoryview(a, b)
100 loops, best of 3: 148 ms per …
Run Code Online (Sandbox Code Playgroud)

python arrays performance numpy cython

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

如何在不清除数据库的情况下测试Django on_commit挂钩?

on_commit功能已经被添加到Django的1.9到能够在当前事务提交后触发一个动作(如芹菜任务).

他们后来在文档中提到应该TransactionTestCase用来测试依赖于该功能的功能.但是,与TestCase(使用事务并将其回滚)不同,TransactionTestCase在每次测试后清空整个数据库.

不幸的是,我有数据迁移在数据库中预加载一些有用的数据,这意味着在第一次测试清除数据库后,后续测试不再起作用.

我最后通过嘲笑来诉诸于一个肮脏的伎俩on_commit:

with mock.patch.object(django.db.transaction, 'on_commit', lambda t: t()):
    test_something()
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

python testing django transactions

10
推荐指数
2
解决办法
2407
查看次数

gluTess函数背后的算法是什么?

我出于好奇而问这个问题,在出于性能原因使用GLU之前首先尝试实现这样的算法.

我已经研究过常见的算法(Delaunay,经常会提到Ear Clipping),但我似乎无法理解GLU如何一直这么做.

你们有没有关于这个主题的有趣论文或文章?

opengl tesselation

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

如何在 ffmpeg 命令行中将 RGB 图像编码为 HDR10 视频?

如何使用 ffmpeg 命令行以及正确的颜色和亮度元数据对 RGB 图像中的 HDR10 视频进行编码?

在搜索有关如何正确编码 HDR10 流的信息时,有很多 ffmpeg 命令行示例,但我没有找到任何包含使用 RGB 帧作为输入时可以调整的所有参数的完整列表的示例。

例如:

  • 本文包含大量信息,但使用现有视频作为输入。
  • 同样,本文使用现有视频作为输入

ffmpeg

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

NSURLConnection didReceiveData未被调用

我已经阅读了大量的消息再次说同样的事情:当你使用NSURLConnection时,不会调用委托方法.我理解Apple的文档是不完整的并且引用了弃用的方法,这是一种耻辱,但我似乎无法找到解决方案.

请求代码在那里:

// Create request
NSURL *urlObj = [NSURL URLWithString:url];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlObj cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30];
[request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];

if (![NSURLConnection canHandleRequest:request]) {
    NSLog(@"Can't handle request...");
    return;
}

// Start connection
dispatch_async(dispatch_get_main_queue(), ^{
    self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES]; // Edited
});
Run Code Online (Sandbox Code Playgroud)

...代理方法的代码在这里:

- (void) connection:(NSURLConnection *)_connection didReceiveResponse:(NSURLResponse *)response {
    NSLog(@"Receiving response: %@, status %d", [(NSHTTPURLResponse*)response allHeaderFields], [(NSHTTPURLResponse*) response statusCode]);
    self.data = [NSMutableData data];
}

- (void) connection:(NSURLConnection *)_connection didFailWithError:(NSError *)error {
    NSLog(@"Connection failed: %@", error); …
Run Code Online (Sandbox Code Playgroud)

objective-c nsurlconnection ios

6
推荐指数
2
解决办法
8821
查看次数