use*_*817 9 python queue multiprocessing
我创建了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
有什么建议?
buk*_*zor 19
我对多处理问题的解决方案几乎总是使用Manager对象.虽然暴露的接口是相同的,但底层实现更简单,并且具有更少的错误.
from multiprocessing import Manager
manager = Manager()
result_queue = manager.Queue()
Run Code Online (Sandbox Code Playgroud)
尝试一下,看看它是否无法解决您的问题.