本文整理匯總了Python中multiprocessing.Barrier方法的典型用法代碼示例。如果您正苦於以下問題:Python multiprocessing.Barrier方法的具體用法?Python multiprocessing.Barrier怎麽用?Python multiprocessing.Barrier使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類multiprocessing
的用法示例。
在下文中一共展示了multiprocessing.Barrier方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: test_reader_blocks_writer
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_reader_blocks_writer(self):
with self.lock.for_read():
before_write = multiprocessing.Barrier(2)
during_write = multiprocessing.Barrier(2)
after_write = multiprocessing.Barrier(2)
after_unlock = multiprocessing.Barrier(2)
def test():
self.assert_readers(1)
before_write.wait()
with self.lock.for_write():
self.assert_writer()
return 'written'
writer = self.async(test)
# Wait until we can confirm that all writers are locked out.
before_write.wait()
self.assert_readers(1)
self.assertEqual('written', self.get_result(writer))
self.assert_unlocked()
示例2: test_multiple_writers_block_each_other
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_multiple_writers_block_each_other(self):
with self.lock.for_write():
before_write = multiprocessing.Barrier(2)
def test():
before_write.wait()
with self.lock.for_write():
self.assert_writer()
return 'written'
writer = self.async(test)
before_write.wait()
self.assert_writer()
self.assertEqual('written', self.get_result(writer))
self.assert_unlocked()
示例3: test_read_multi_processes
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_read_multi_processes(self):
barrier = multiprocessing.Barrier(2)
with self.fs_handler.open_as_container(
os.path.abspath(self.zip_file_path)) as handler:
with handler.open(self.testfile_name) as f:
f.read()
def func():
# accessing the shared container
with handler.open(self.testfile_name) as f:
barrier.wait()
f.read()
p1 = multiprocessing.Process(target=func)
p2 = multiprocessing.Process(target=func)
p1.start()
p2.start()
p1.join(timeout=1)
p2.join(timeout=1)
self.assertEqual(p1.exitcode, 0)
self.assertEqual(p2.exitcode, 0)
示例4: build_ctrl
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def build_ctrl(self, world_size):
"""
Builds several parallel communication mechanisms for controlling the
workflow across processes.
"""
opt_throttle = (mp.Barrier(world_size) if world_size > 1 else
None)
return AttrDict(
quit=mp.Value('b', lock=True),
quit_opt=mp.RawValue('b'),
sample_ready=[mp.Semaphore(0) for _ in range(2)], # Double buffer.
sample_copied=[mp.Semaphore(1) for _ in range(2)],
sampler_itr=mp.Value('l', lock=True),
opt_throttle=opt_throttle,
eval_time=mp.Value('d', lock=True),
)
示例5: test_remove_in_main_process_spawn
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_remove_in_main_process_spawn(monkeypatch):
# Actually, this test may fail if sleep time in main process is too small (and no barrier used)
# In such situation, it seems the child process has not enough time to initialize itself
# It may fail with an "EOFError" during unpickling of the (garbage collected / closed) Queue
ctx = multiprocessing.get_context("spawn")
monkeypatch.setattr(loguru._handler, "multiprocessing", ctx)
writer = Writer()
barrier = ctx.Barrier(2)
logger.add(writer, format="{message}", enqueue=True, catch=False)
process = ctx.Process(target=subworker_barrier, args=(logger, barrier))
process.start()
barrier.wait()
logger.info("Main")
logger.remove()
process.join()
assert process.exitcode == 0
assert writer.read() == "Child\nMain\n"
示例6: test_remove_in_main_process_fork
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_remove_in_main_process_fork():
writer = Writer()
barrier = multiprocessing.Barrier(2)
logger.add(writer, format="{message}", enqueue=True, catch=False)
process = multiprocessing.Process(target=subworker_barrier, args=(logger, barrier))
process.start()
barrier.wait()
logger.info("Main")
logger.remove()
process.join()
assert process.exitcode == 0
assert writer.read() == "Child\nMain\n"
示例7: test_remove_in_main_process_inheritance
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_remove_in_main_process_inheritance():
writer = Writer()
barrier = multiprocessing.Barrier(2)
logger.add(writer, format="{message}", enqueue=True, catch=False)
process = multiprocessing.Process(target=subworker_barrier_inheritance, args=(barrier,))
process.start()
barrier.wait()
logger.info("Main")
logger.remove()
process.join()
assert process.exitcode == 0
assert writer.read() == "Child\nMain\n"
示例8: test_complete_from_multiple_child_processes
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_complete_from_multiple_child_processes(capsys):
logger.add(lambda _: None, enqueue=True, catch=False)
num = 100
barrier = multiprocessing.Barrier(num)
def worker(barrier):
barrier.wait()
logger.complete()
processes = []
for _ in range(num):
process = multiprocessing.Process(target=worker, args=(barrier,))
process.start()
processes.append(process)
for process in processes:
process.join(5)
assert process.exitcode == 0
out, err = capsys.readouterr()
assert out == err == ""
示例9: test_writer_blocks_multiple_readers
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_writer_blocks_multiple_readers(self):
with self.lock.for_write():
before_read = multiprocessing.Barrier(3)
during_read = multiprocessing.Barrier(2)
after_read = multiprocessing.Barrier(2)
def test():
self.assert_writer()
before_read.wait()
with self.lock.for_read():
during_read.wait()
value = self.reader_count()
after_read.wait()
return value
r1 = self.async(test)
r2 = self.async(test)
# Wait until we can confirm that all readers are locked out
before_read.wait()
self.assert_writer()
self.assertEqual(2, self.get_result(r1))
self.assertEqual(2, self.get_result(r2))
self.assert_unlocked()
示例10: test_multiple_readers_block_writer
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_multiple_readers_block_writer(self):
with self.lock.for_read():
before_read = multiprocessing.Barrier(3)
after_read = multiprocessing.Barrier(2)
def test_reader():
self.assert_readers(1)
with self.lock.for_read():
before_read.wait()
value = self.reader_count()
after_read.wait()
return value
def test_writer():
before_read.wait()
with self.lock.for_write():
self.assert_writer()
return 'written'
reader = self.async(test_reader)
writer = self.async(test_writer)
# Wait for the write to be blocked by multiple readers.
before_read.wait()
self.assert_readers(2)
after_read.wait()
self.assertEqual(2, self.get_result(reader))
self.assertEqual('written', self.get_result(writer))
self.assert_unlocked()
示例11: setUp
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def setUp(self):
self.barrier = self.Barrier(self.N, timeout=self.defaultTimeout)
示例12: test_action
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_action(self):
"""
Test the 'action' callback
"""
results = self.DummyList()
barrier = self.Barrier(self.N, action=AppendTrue(results))
self.run_threads(self._test_action_f, (barrier, results))
self.assertEqual(len(results), 1)
示例13: test_abort_and_reset
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_abort_and_reset(self):
"""
Test that a barrier can be reset after being broken.
"""
results1 = self.DummyList()
results2 = self.DummyList()
results3 = self.DummyList()
barrier2 = self.Barrier(self.N)
self.run_threads(self._test_abort_and_reset_f,
(self.barrier, barrier2, results1, results2, results3))
self.assertEqual(len(results1), 0)
self.assertEqual(len(results2), self.N-1)
self.assertEqual(len(results3), self.N)
示例14: test_default_timeout
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def test_default_timeout(self):
"""
Test the barrier's default timeout
"""
barrier = self.Barrier(self.N, timeout=0.5)
results = self.DummyList()
self.run_threads(self._test_default_timeout_f, (barrier, results))
self.assertEqual(len(results), barrier.parties)
示例15: _build_parallel_ctrl
# 需要導入模塊: import multiprocessing [as 別名]
# 或者: from multiprocessing import Barrier [as 別名]
def _build_parallel_ctrl(self, n_worker):
self.ctrl = AttrDict(
quit=mp.RawValue(ctypes.c_bool, False),
barrier_in=mp.Barrier(n_worker + 1),
barrier_out=mp.Barrier(n_worker + 1),
do_eval=mp.RawValue(ctypes.c_bool, False),
itr=mp.RawValue(ctypes.c_long, 0),
)
self.traj_infos_queue = mp.Queue()
self.eval_traj_infos_queue = mp.Queue()
self.sync = AttrDict(stop_eval=mp.RawValue(ctypes.c_bool, False))