小编AJS*_*yth的帖子

可以在Python进程之间共享set()吗?

我在Python 2.7中使用多处理来处理非常大的数据集.当每个进程运行时,它会将整数添加到共享的mp.Manager.Queue(),但前提是其他进程尚未添加相同的整数.由于你不能对队列进行"in"式成员资格测试,我这样做的方法是检查每个int是否为共享mp.Manager.list()中的成员资格.该列表最终将有大约3000万个条目,因此成员资格测试将非常缓慢,从而使多处理的优势无效.

这是我正在做的简化版本:

import multiprocessing as mp

def worker(shared_list, out_q, lock):
    # Do some processing and get an integer
    result_int = some_other_code()

    # Use a lock to ensure nothing is added to the list in the meantime
    lock.acquire()
    # This lookup can take forever when the list is large
    if result_int not in shared_list:
        out_q.put(result_int)
        shared_list.append(result_int)
    lock.release()

manager = mp.Manager()
shared_list = manager.list()
lock = manager.lock()
out_q = manager.Queue()

for i in range(8):
   p = mp.Process(target=worker, args=(shared_list, out_q, lock))
   p.start() …
Run Code Online (Sandbox Code Playgroud)

python set multiprocessing

3
推荐指数
1
解决办法
2751
查看次数

如何将最后一个字符串附加到 StringBuilder?

在 C# 中,我有一个StringBuilder sb我在 for 循环中多次附加到它。

是否有一种简单的方法StringBuilders可以吐出附加到它的最后一个字符串?

c# stringbuilder

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

标签 统计

c# ×1

multiprocessing ×1

python ×1

set ×1

stringbuilder ×1