相关疑难解决方法(0)

多处理和子进程有什么区别?

我的工作应该使用并行技术,我是python的新用户.所以我想知道你是否可以分享一些关于python multiprocessingsubprocess模块的资料.这两者有什么区别?

python subprocess multiprocessing

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

如何在超时后中止multiprocessing.Pool中的任务?

我试图以这种方式使用python的多处理包:

featureClass = [[1000,k,1] for k in drange(start,end,step)] #list of arguments
for f in featureClass:
  pool .apply_async(worker, args=f,callback=collectMyResult)
pool.close()
pool.join
Run Code Online (Sandbox Code Playgroud)

从池的进程我想避免等待超过60秒的那些返回其结果.那可能吗?

python multiprocessing python-multiprocessing

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

Python多处理模块:使用超时连接进程

我正在进行复杂模拟参数的优化.我使用多处理模块来增强优化算法的性能.我在http://pymotw.com/2/multiprocessing/basics.html上学到了多处理的基础知识.根据优化算法中给定的参数,复杂模拟持续不同的时间,大约1到5分钟.如果选择的参数非常糟糕,则模拟可持续30分钟或更长时间,结果无效.所以我在考虑在多处理的超时中构建,这会终止所有持续超过定义时间的模拟.这是问题的抽象版本:

import numpy as np
import time
import multiprocessing

def worker(num):

    time.sleep(np.random.random()*20)

def main():

    pnum = 10    

    procs = []
    for i in range(pnum):
        p = multiprocessing.Process(target=worker, args=(i,), name = ('process_' + str(i+1)))
        procs.append(p)
        p.start()
        print 'starting', p.name

    for p in procs:
        p.join(5)
        print 'stopping', p.name

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

该行p.join(5)定义了5秒的超时.由于for循环for p in procs:,程序等待5秒直到第一个进程完成,然后再等待5秒直到第二个进程完成,依此类推,但我希望程序终止所有持续超过5秒的进程.此外,如果所有进程的持续时间都不超过5秒,则程序不得等待5秒钟.

python timeout python-multiprocessing

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