本文整理汇总了Python中multiprocessing.JoinableQueue.get方法的典型用法代码示例。如果您正苦于以下问题:Python JoinableQueue.get方法的具体用法?Python JoinableQueue.get怎么用?Python JoinableQueue.get使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类multiprocessing.JoinableQueue
的用法示例。
在下文中一共展示了JoinableQueue.get方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: progdev_all
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
def progdev_all(boffile, gain):
""" Initialize all roach boards with boffile and gain settings """
roachlist = ['rofl%i'%i for i in range(1,16+1)]
n_roach = len(roachlist)
print "Programming all roaches with %s"%boffile
print "Gain value: %ix"%gain
print "Please wait..."
# Create threads and message queue
procs = []
q = JoinableQueue()
for i in range(n_roach):
p = Process(target=progdev_adc16, args=(roachlist[i], q, boffile, gain))
procs.append(p)
# Start threads
for p in procs:
p.start()
# Join threads
for p in procs:
p.join()
# Print messages
while q.empty() is False:
print q.get()
print "OK"
示例2: main
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
def main():
from multiprocessing import JoinableQueue
from genmod.vcf import vcf_header
from genmod.utils import annotation_parser
parser = argparse.ArgumentParser(description="Parse different kind of pedigree files.")
parser.add_argument('variant_file', type=str, nargs=1 , help='A file with variant information.')
parser.add_argument('annotation_file', type=str, nargs=1 , help='A file with feature annotations.')
parser.add_argument('-phased', '--phased', action="store_true", help='If variant file is phased.')
parser.add_argument('-v', '--verbose', action="store_true", help='Increase output verbosity.')
args = parser.parse_args()
infile = args.variant_file[0]
if args.verbose:
print('Parsing annotationfile...')
start_time_annotation = datetime.now()
my_anno_parser = annotation_parser.AnnotationParser(args.annotation_file[0], 'ref_gene')
if args.verbose:
print('annotation parsed. Time to parse annotation: %s\n' % str(datetime.now() - start_time_annotation))
my_head_parser = vcf_header.VCFParser(infile)
my_head_parser.parse()
print(my_head_parser.__dict__)
variant_queue = JoinableQueue()
start_time = datetime.now()
my_parser = VariantFileParser(infile, variant_queue, my_head_parser, my_anno_parser, args)
nr_of_batches = my_parser.parse()
print(nr_of_batches)
for i in range(nr_of_batches):
variant_queue.get()
variant_queue.task_done()
variant_queue.join()
print('Time to parse variants: %s ' % str(datetime.now()-start_time))
示例3: MMapPool
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
class MMapPool(object):
def __init__(self, n, mmap_size):
self.n = n
self.mmap_size = mmap_size
self.pool = [mmap.mmap(-1, mmap_size) for _ in range(n)]
self.free_mmaps = set(range(n))
self.free_queue = JoinableQueue()
def new(self):
if not self.free_mmaps:
self.free_mmaps.add(self.free_queue.get())
self.free_queue.task_done()
while True:
try:
self.free_mmaps.add(self.free_queue.get_nowait())
self.free_queue.task_done()
except Empty:
break
mmap_idx = self.free_mmaps.pop()
return mmap_idx, self.pool[mmap_idx]
def join(self):
while len(self.free_mmaps) < self.n:
self.free_mmaps.add(self.free_queue.get())
self.free_queue.task_done()
def get(self, idx):
return self.pool[idx]
def free(self, idx):
self.free_queue.put(idx)
示例4: InternalSet
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
def InternalSet(Achild:Queue, Bchild:Queue, outqueue:Queue):
"""Take the output of two LeafSet's and take the union."""
logger = multiprocessing.log_to_stderr()
logger.setLevel(logging.INFO)
AminusB = set()
BminusA = set()
morestuff = True
while morestuff:
a = Achild.get()
b = Bchild.get()
logger.info("Internal:%s:%s" % (a, b))
if a in BminusA:
BminusA.remove(a)
elif a not in AminusB:
AminusB.add(a)
outqueue.put(a)
if b in AminusB:
AminusB.remove(b)
elif b not in BminusA:
BminusA.add(b)
outqueue.put(b)
Achild.task_done()
Bchild.task_done()
if (a == SIGOBJ) or (b == SIGOBJ):
outqueue.put(SIGOBJ)
morestuff = False
logger.info("internal done")
示例5: data_generator_func
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
def data_generator_func(in_queue: JoinableQueue, out_queue: Queue, tr_h, hr_t, n_entity, neg_weight):
while True:
dat = in_queue.get()
if dat is None:
break
# [head(tail), relation, #of_total_positive_candidates, positive_instances..., negative_instances...]
hr_tlist = list()
hr_tweight = list()
tr_hlist = list()
tr_hweight = list()
htr = dat
for idx in range(htr.shape[0]):
if np.random.uniform(-1, 1) > 0: # t r predict h
tr_hweight.append(
[1. if x in tr_h[htr[idx, 1]][htr[idx, 2]] else y for
x, y in enumerate(np.random.choice([0., -1.], size=n_entity, p=[1 - neg_weight, neg_weight]))])
tr_hlist.append([htr[idx, 1], htr[idx, 2]])
else: # h r predict t
hr_tweight.append(
[1. if x in hr_t[htr[idx, 0]][htr[idx, 2]] else y for
x, y in enumerate(np.random.choice([0., -1.], size=n_entity, p=[1 - neg_weight, neg_weight]))])
hr_tlist.append([htr[idx, 0], htr[idx, 2]])
out_queue.put((np.asarray(hr_tlist, dtype=np.int32), np.asarray(hr_tweight, dtype=np.float32),
np.asarray(tr_hlist, dtype=np.int32), np.asarray(tr_hweight, dtype=np.float32)))
示例6: main
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
def main():
jobs = JoinableQueue()
result = JoinableQueue()
numToProcess = -1
scores = pd.DataFrame(columns=['query','fmeasure','precision','recall',
'size','maxDistance','topHits',"contextSteps"])
print len(datasets)
for key in datasets:
jobs.put(key)
processed_count = Counter()
for i in xrange(NUMBER_OF_PROCESSES):
p = Process(target=work, args=(i, jobs, result, processed_count))
p.daemon = True
p.start()
#work(1, jobs, result, processed_count)
automated_annotations = {}
distances = {}
jobs.join()
dataset_index = collections.defaultdict(set)
annotated_datasets = set()
while not result.empty():
dataset, classes = result.get()
if len(classes) == 0:
annotated_datasets.add(dataset)
for c in classes.keys():
dataset_index[c].add(dataset)
owl_class = Class(c, graph=graph)
for parent in owl_class.parents:
dataset_index[parent.identifier].add(dataset)
result.task_done()
print '\n'
for query, c in queries.items():
manual = ground_truth[query]
automated = dataset_index[c]
hits = manual & automated
misses = manual - automated
precision = np.nan if len(automated) == 0 else float(len(hits)) / len(automated)
recall = np.nan if len(manual) == 0 else float(len(hits)) / len(manual)
if precision != 0 or recall != 0:
fmeasure = 0 if np.isnan(precision) or np.isnan(recall) else 2 * (precision * recall) / (precision + recall)
else:
fmeasure = 0
scores = scores.append(dict(query=query, size=len(manual), precision=precision, recall=recall, fmeasure=fmeasure,topHits=topHits, maxDistance=maxDistance, contextSteps = context_steps),
ignore_index=True)
print "Hits for", query, c
print '\n'.join(sorted(hits))
print scores
print "Annotated", len(annotated_datasets), "datasets."
示例7: __init__
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
class QueueTask:
def __init__(self):
self.queue = JoinableQueue()
self.event = Event()
atexit.register( self.queue.join )
process = Process(target=self.work)
process.daemon = True
process.start()
def work(self):
while True:
func, args, wait_for = self.queue.get()
for evt in wait_for:
evt.wait()
func(*args)
self.event.set()
self.queue.task_done()
def enqueue(self, func, args=[], wait_for=[]):
self.event.clear()
self.queue.put( (func, args, wait_for) )
return self.event
示例8: main
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
def main():
num_page = 6000
num_processes = 60
num_works = num_page / num_processes
q = JoinableQueue()
pool = list()
final_set = set()
for index in xrange(1,num_processes+1):
p = Process(target=fetch_feature,args=(q,index,num_works))
p.start()
for index in xrange(1,num_processes+1):
final_set = final_set.union(q.get())
#p.join()
# pool.append(p)
#for p in pool:
# p.join()
result_file = open('result.out','w');
for feature in final_set:
print feature
result_file.write(feature+'\n')
result_file.close()
print len(final_set)
示例9: __init__
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
class AlarmExecutor:
def __init__(self):
self.queue = JoinableQueue(10)
self.running = False
self.t = Thread(target=self._run, name="AlarmExecutor")
def _run(self):
while self.running:
try:
alarm = self.queue.get(block=True, timeout=1)
alarm.execute()
logging.debug("Alarm executed")
self.queue.task_done()
except Queue.Empty:
continue
def start(self):
logging.debug("Starting alarm executor")
self.running = True
self.t.start()
def stop(self):
if self.running:
logging.debug("Stoppping alarm executor")
self.running = False
self.t.join()
else:
logging.debug("Attempted to stop alarm executor when it is not running")
示例10: queueManager
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
def queueManager(numProc, myList, function, *args):
'''queueManager(numProc, myList, function, *args):
generic function used to start worker processes via the multiprocessing Queue object
numProc - number of processors to use
myList - a list of objects to be iterated over
function - target function
*args - additional arguments to pass to function
Return - an unordered list of the results from myList
'''
qIn = Queue()
qOut = JoinableQueue()
if args:
arguments = (qIn, qOut,) + args
else:
arguments = (qIn, qOut,)
results = []
# reduce processer count if proc count > files
i = 0
for l in myList:
qIn.put((i,l))
i += 1
for _ in range(numProc):
p = Process(target = function, args = arguments).start()
sys.stdout.write("Progress: {:>3}%".format(0)
)
curProgress = 0
lastProgress = 0
while qOut.qsize() < len(myList):
#sys.stdout.write("\b\b\b\b{:>3}%".format(int(ceil(100*qOut.qsize()/len(myList)))))
curProgress = int(ceil(100*qOut.qsize()/len(myList)))
if curProgress - lastProgress > 10:
lastProgress += 10
sys.stdout.write("\nProgress: {:>3}%".format(lastProgress))
sys.stdout.flush()
sys.stdout.write("\nProgress: {:>3}%".format(100))
#sys.stdout.write("\b\b\b\b{:>3}%".format(100))
sys.stdout.write("\n")
for _ in range(len(myList)):
# indicate done results processing
results.append(qOut.get())
qOut.task_done()
#tell child processes to stop
for _ in range(numProc):
qIn.put('STOP')
orderedRes = [None]*len(results)
for i, res in results:
orderedRes[i] = res
qOut.join()
qIn.close()
qOut.close()
return orderedRes
示例11: worker_func
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
def worker_func(in_queue: JoinableQueue, out_queue: Queue, hr_t, tr_h):
while True:
dat = in_queue.get()
if dat is None:
in_queue.task_done()
continue
testing_data, head_pred, tail_pred = dat
out_queue.put(test_evaluation(testing_data, head_pred, tail_pred, hr_t, tr_h))
in_queue.task_done()
示例12: mpqueue
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
def mpqueue():
queue = JoinableQueue()
#parent_conn, child_conn = os.pipe()
p = Process(target=mpqueue_f, args=(queue,))
p.start()
data = queue.get() # prints "[42, None, 'hello']"
print(data.shape)
queue.join()
p.join()
示例13: WorkerQueue
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
class WorkerQueue(object):
def __init__(self, num_workers = 20):
self.queue = Queue()
self.pool = []
self._setup_workers(num_workers)
def _setup_workers(self, num_workers):
""" Sets up the worker threads
NOTE: undefined behaviour if you call this again.
"""
self.pool = []
for _ in range(num_workers):
self.pool.append(Thread(target=self.threadloop))
for a_thread in self.pool:
a_thread.setDaemon(True)
a_thread.start()
def do(self, f, *args, **kwArgs):
""" puts a function on a queue for running later.
"""
self.queue.put((f, args, kwArgs))
def stop(self):
""" Stops the WorkerQueue, waits for all of the threads to finish up.
"""
self.queue.put(STOP)
for thread in self.pool:
thread.join()
def threadloop(self): #, finish = False):
""" Loops until all of the tasks are finished.
"""
while True:
args = self.queue.get()
if args is STOP:
self.queue.put(STOP)
self.queue.task_done()
break
else:
try:
args[0](*args[1], **args[2])
finally:
# clean up the queue, raise the exception.
self.queue.task_done()
#raise
def wait(self):
""" waits until all tasks are complete.
"""
self.queue.join()
示例14: apply_mt
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
def apply_mt(self, xs, parallelism, **kwargs):
"""Run the UDF multi-threaded using python multiprocessing"""
if snorkel_conn_string.startswith('sqlite'):
raise ValueError('Multiprocessing with SQLite is not supported. Please use a different database backend,'
' such as PostgreSQL.')
# Fill a JoinableQueue with input objects
in_queue = JoinableQueue()
for x in xs:
in_queue.put(x)
# If the UDF has a reduce step, we collect the output of apply in a
# Queue. This is also used to track progress via the the UDF sentinel
out_queue = JoinableQueue()
# Keep track of progress counts
total_count = in_queue.qsize()
count = 0
# Start UDF Processes
for i in range(parallelism):
udf = self.udf_class(in_queue=in_queue, out_queue=out_queue,
add_to_session=(self.reducer is None), **self.udf_init_kwargs)
udf.apply_kwargs = kwargs
self.udfs.append(udf)
# Start the UDF processes, and then join on their completion
for udf in self.udfs:
udf.start()
while any([udf.is_alive() for udf in self.udfs]) and count < total_count:
y = out_queue.get()
# Update progress whenever an item was processed
if y == UDF.TASK_DONE_SENTINEL:
count += 1
if self.pb is not None:
self.pb.update(1)
# If there is a reduce step, do now on this thread
elif self.reducer is not None:
self.reducer.reduce(y, **kwargs)
out_queue.task_done()
else:
raise ValueError("Got non-sentinel output without reducer.")
if self.reducer is None:
for udf in self.udfs:
udf.join()
else:
self.reducer.session.commit()
self.reducer.session.close()
# Flush the processes
self.udfs = []
示例15: Analyzer
# 需要导入模块: from multiprocessing import JoinableQueue [as 别名]
# 或者: from multiprocessing.JoinableQueue import get [as 别名]
class Analyzer(object):
def __init__(self, data_root, working_dir, tpr, index=True, index_output='index.h5'):
# list of analysis objects
self.__analyses = []
self.__working_dir = working_dir
self.__fs = file_system.SH3FileSystem(data_root, index=True, index_output=index_output)
self.__loader = loader.Loader(working_dir)
self.__task_queue = JoinableQueue(8)
self.__tpr = tpr
def run(self):
# start a queue of size max 8, block if no empty slots
# populate the task queue with (analysis, xtc) items
for i in range(0, 8):
p = Process(target=self.__worker)
p.start()
for batch in self.__fs.xtc_files():
print "batch", batch
for xtc in batch:
for analysis in self.__analyses:
print "queuing", analysis.name(), "and", xtc.name()
self.__task_queue.put([analysis, xtc], True, None)
print "waiting for these tasks to finish"
self.__task_queue.join()
print "tasks have finished"
print "PID", os.getpid(), "loading analysis"
for xtc in batch:
for a in self.__analyses:
self.__loader.load(a, xtc)
def add(self, analysis):
self.__analyses.append(analysis)
def remove(self, analysis):
self.__analyses.append(analysis)
def __worker(self):
# TODO: use pool because it looks like the processes sometimes don't die if it fails
# get one item from queue
# block if queue is empty
while True:
try:
# timeout after 30 seconds
analysis,xtc = self.__task_queue.get(True, 30)
except Empty:
break
else:
analysis.run(xtc, self.__tpr)
self.__task_queue.task_done()