我创建了100个子进程
proc_list = [
Process(target = simulator, args=(result_queue,))
for i in xrange(100)]
Run Code Online (Sandbox Code Playgroud)
并开始他们
for proc in proc_list: proc.start()
Run Code Online (Sandbox Code Playgroud)
在进行一些处理之后,每个进程都会将result_queue(multiprocessing.Queue的实例)10000个元组放入其中.
def simulate(alg_instance, image_ids, gamma, results,
simulations, sim_semaphore):
(rs, qs, t_us) = alg_instance.simulate_multiple(image_ids, gamma,
simulations)
all_tuples = zip(rs, qs, t_us)
for result in all_tuples:
results.put(result)
sim_semaphore.release()
Run Code Online (Sandbox Code Playgroud)
我应该(?)在队列中获得1000000个元组,但经过各种运行后我得到这些(样本)大小:14912 19563 12952 13524 7487 18350 15986 11928 14281 14282 7317
有什么建议?
我用一个简单的打印命令转储了多个defaultdict,如下所示:
defaultdict(<type 'list'>, {'actual': [20000.0, 19484.0, 19420.0], 'gold': [20000.0, 19484.0, 19464.0]})
Run Code Online (Sandbox Code Playgroud)
我可以使用一些标准的解析器来检索它们吗?我知道我应该使用pickle,但生成这些defaultdict的代码非常慢,我想避免重新运行它.