Articles of hilo de seguridad

Problema básico de múltiples subprocesos en Python

Nuevo en Python y tratando de entender multi-threading. Aquí hay un ejemplo de la documentación de Python en la cola Por el gusto de mi vida, no entiendo cómo funciona este ejemplo. En la función worker (), hay un bucle infinito. ¿Cómo sabe el trabajador cuándo salir del circuito? No parece haber ninguna condición de […]

Haz que el módulo aleatorio sea seguro para hilos en Python

Tengo una aplicación que requiere los mismos resultados dado el mismo valor aleatorio. Pero encuentro random.randint no threadsafe. He intentado mutex pero esto no funciona. Aquí está mi código de experimento (largo pero simple): import threading import random def child(n, a): g_mutex = threading.Lock() g_mutex.acquire() random.seed(n) for i in xrange(100): a.append(random.randint(0, 1000)) g_mutex.release() def main(): […]

¿Las variables de instancia de Python son seguras para subprocesos?

OK, revisa los siguientes códigos primero: class DemoClass(): def __init__(self): #### I really want to know if self.Counter is thread-safe. self.Counter = 0 def Increase(self): self.Counter = self.Counter + 1 def Decrease(self): self.Counter = self.Counter – 1 def DoThis(self): while True: Do something if A happens: self.Increase() else: self.Decrease() time.sleep(randomSecs) def DoThat(self): while True: Do […]

Python 2.7: Imprimir hilo seguro

He visto una publicación similar aquí, sin embargo, se refiere a Python 2.6 y esperaba que hubiera una forma más fácil. Al leer el hilo, parece que la mejor manera es simplemente reemplazar todas mis declaraciones de impresión con sys.stdout.write (s + ‘\ n’)? Esperaba que hubiera una forma mejor que me permitiera usar la […]

¿Cómo hacer que los contenedores incorporados (conjuntos, diccionarios, listas) sean seguros?

Entiendo de esta pregunta que si quiero tener un set que sea seguro para subprocesos, tengo que implementar la parte de seguridad de subprocesos por mi cuenta. Por lo tanto podría llegar a: from threading import Lock class LockedSet(set): “””A set where add() and remove() are thread-safe””” def __init__(self, *args, **kwargs): # Create a lock […]

¿Los contenedores incorporados de Python son seguros para subprocesos?

Me gustaría saber si los contenedores incorporados de Python (lista, vector, conjunto …) son seguros para subprocesos? ¿O necesito implementar un entorno de locking / deslocking para mi variable compartida?

¿El diccionario de Python es seguro para hilos?

Algunos dijeron que el diccionario de Python es seguro para subprocesos. ¿Significa que puedo o no puedo modificar los elementos de un diccionario mientras estoy iterando sobre él?

Seguridad del hilo en el diccionario de Python

Tengo una clase que contiene un diccionario. class OrderBook: orders = {‘Restaurant1’: None, ‘Restaurant2’: None, ‘Restaurant3’: None, ‘Restaurant4’: None} @staticmethod def addOrder(restaurant_name, orders): OrderBook.orders[restaurant_name] = orders Y estoy ejecutando 4 hilos (uno para cada restaurante) que llaman al método OrderBook.addOrder . Aquí está la función ejecutada por cada hilo: def addOrders(restaurant_name): #creates orders … OrderBook.addOrder(restaurant_name, […]

¿Son seguras las hebras globales en el matraz? ¿Cómo comparto datos entre solicitudes?

En mi aplicación, el estado de un objeto común se cambia al realizar solicitudes, y la respuesta depende del estado. class SomeObj(): def __init__(self, param): self.param = param def query(self): self.param += 1 return self.param global_obj = SomeObj(0) @app.route(‘/’) def home(): flash(global_obj.query()) render_template(‘index.html’) Si ejecuto esto en mi servidor de desarrollo, espero obtener 1, 2, […]