相关疑难解决方法(0)

968
推荐指数
27
解决办法
19万
查看次数

异步与非阻塞

异步和非阻塞调用之间有什么区别?阻塞和同步调用之间(请举例)?

asynchronous synchronous blocking

352
推荐指数
9
解决办法
11万
查看次数

如何并行化一个简单的Python循环?

这可能是一个微不足道的问题,但我如何在python中并行化以下循环?

# setup output lists
output1 = list()
output2 = list()
output3 = list()

for j in range(0, 10):
    # calc individual parameter value
    parameter = j * offset
    # call the calculation
    out1, out2, out3 = calc_stuff(parameter = parameter)

    # put results into correct output list
    output1.append(out1)
    output2.append(out2)
    output3.append(out3)
Run Code Online (Sandbox Code Playgroud)

我知道如何在Python中启动单线程,但我不知道如何"收集"结果.

多个过程也可以 - 对于这种情况最简单的事情.我正在使用当前的Linux,但代码应该在Windows和Mac上运行.

并行化此代码的最简单方法是什么?

python parallel-processing

200
推荐指数
11
解决办法
25万
查看次数

协调node.js中的并行执行

node.js的事件驱动编程模型使得协调程序流有点棘手.

简单的顺序执行变成了嵌套的回调,这很容易(虽然写下来有点复杂).

但并行执行怎么样?假设您有三个可以并行运行的任务A,B,C,当它们完成时,您希望将结果发送到任务D.

使用fork/join模型,这将是

  • 叉子A.
  • 叉子B.
  • 叉子C.
  • 加入A,B,C,运行D.

我如何在node.js中编写它?有没有最佳做法或烹饪书?我是否每次都必须手动滚动解决方案,或者是否有一些带帮助程序的库?

javascript parallel-processing concurrency fork-join node.js

79
推荐指数
3
解决办法
4万
查看次数

Java-5 ThreadPoolExecutor相对于Java-7 ForkJoinPool有什么优势?

Java 5引入了Executor框架形式的线程池对异步任务执行的支持,其核心是java.util.concurrent.ThreadPoolExecutor实现的线程池.Java 7以java.util.concurrent.ForkJoinPool的形式添加了一个备用线程池.

查看各自的API,ForkJoinPool在标准场景中提供了ThreadPoolExecutor功能的超集(虽然严格来说ThreadPoolExecutor提供了比ForkJoinPool更多的调优机会).除此之外,fork/join任务看起来更快(可能是因为工作窃取调度程序)的观察结果显然需要更少的线程(由于非阻塞连接操作),可能会让人觉得ThreadPoolExecutor已被取代ForkJoinPool.

但这真的是对的吗?我读过的所有材料似乎总结为两种类型的线程池之间相当模糊的区别:

  • ForkJoinPool适用于许多依赖的,任务生成的,简短的,几乎不会阻塞(即计算密集型)的任务
  • ThreadPoolExecutor用于少量,独立,外部生成,长期,有时阻塞的任务

这种区别是否正确?我们能说出更具体的内容吗?

java parallel-processing threadpool threadpoolexecutor forkjoinpool

34
推荐指数
2
解决办法
5417
查看次数

java中的并发性和并行性有区别吗?

我一直在谷歌做一些研究,并且无法理解java中并发和并行程序之间的差异(如果有的话).我所看到的一些信息表明两者之间没有差异.是这样的吗?

java parallel-processing concurrency multithreading

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

Python 3:发送方法

我无法理解这种send方法.我知道它用于操作发电机.但语法在这里:generator.send(value).

我莫名其妙地无法理解为什么值应该成为当前yield表达式的结果.我准备了一个例子:

def gen():
    for i in range(10):
        X = yield i
        if X == 'stop':
            break
        print("Inside the function " + str(X))

m = gen()
print("1 Outside the function " + str(next(m)) + '\n')
print("2 Outside the function " + str(next(m)) + '\n')
print("3 Outside the function " + str(next(m)) + '\n')
print("4 Outside the function " + str(next(m)) + '\n')
print('\n')
print("Outside the function " + str(m.send(None)) + '\n') # Start generator …
Run Code Online (Sandbox Code Playgroud)

python generator python-3.x

27
推荐指数
4
解决办法
1万
查看次数

多处理:比cpu.count更多的进程

注意:我"潜入"了multiprocessing2天前的土地.所以我的理解非常基础.

我正在编写和上传到amazon s3存储桶的应用程序.在情况下,文件的大小较大(100mb),我已经实施并使用平行上传poolmultiprocessing模块.我使用一台机器core i7,我有一个cpu_count8.我的印象是,如果pool = Pool(process = 6)我使用6核心,文件开始上传部分,前6个部分的上传同时开始.为了看看当process大于时发生了什么cpu_count,我输入了20(意味着我想要使用20个核心).令我惊讶的是,程序开始同时上传20个零件而不是出现错误(我使用较小的部件chunk size以确保有大量零件).我不明白这种行为.我只有8核心,所以他的程序如何接受20的输入?当我说process=6,它实际上使用6个线程?这可能是20作为有效输入的唯一解释,因为可以有1000个线程.有人可以向我解释一下.

编辑:

我从这里借了'代码' .我只是略微改变了它,我要求用户选择核心用途,而不是设置parallel_processes为4

python multiprocessing

18
推荐指数
1
解决办法
8128
查看次数

不同的(HotSpot)JVM线程类型有什么作用?

我看到HotSpot JVM中实现了六种线程类型:VMThread,CGCThread,PGCThread,JavaThread,CompilerThread和WatcherThread.但是我不知道哪种线程类型正在做什么.这是我到目前为止所理解的:

  • VMThread:运行垃圾收集器等VM任务.
  • CGCThread:并发垃圾收集器.
  • PGCThread:并行垃圾收集器(与CGC的差异?).
  • JavaThread:程序的线程,我想.
  • CompilerThread:编译器的一个线程?
  • WatcherThread:?

其他问题:其他JVM怎么样?

java multithreading jvm

15
推荐指数
1
解决办法
1141
查看次数

物联网请求响应协议

我们需要构建一个可以与运行Android变体的某些嵌入式设备通信的服务器.我们需要能够向设备发送命令,并接收响应.一个简单的命令可能是询问设备的状态.我们不会有HTTP,所以我们需要让客户端/设备与服务器建立连接.

我们正在考虑使用MQTT,因为它具有许多不错的属性(QoS,轻量级,为物联网构建),但它本身不支持请求响应工作流.

我们已经考虑过在MQTT之上构建RPC,但在我们开始之前,我只是想让人们对此问题有所了解.Websockets,WAMP,ZeroMQ会更好吗?


编辑:

Q1: 我们甚至需要RPC吗?

Q2: 有没有一种方法来构建系统,我总是发送异步类型的消息,仍然提供良好的用户体验?

Q3: 任何例子?

寻找实施示例并亲身体验使用单个设备构建物联网通信系统的经验.

parallel-processing android low-latency mqtt iot

12
推荐指数
2
解决办法
1559
查看次数