# Compartir datos, disco duro (archivos), de bloqueo - no se recomienda a partir de multiprocesamiento Importación Proceso, Bloqueo de importación tiempo, JSON, Random Importación OS DEF Buscar (): DIC = la json.load (Open ( ' db.txt ' )) Imprimir ( ' % restante votos S S% ' % (os.getpid (), DIC [ ' COUNT ' ])) DEF GET (): DIC = la json.load (Open ( ' db.txt ' )) el time.sleep ( 0,1) # lectura analógica a la red de datos de latencia SI DIC [ ' COUNT' ]> 0: DIC [ ' COUNT '] - = 1 el time.sleep ( 0.2) # red analógica retrasar los datos de escritura El json.dump (DIC, Open ( ' db.txt ' ' W ' )) Imprimir ( ' % s éxito de compra ' % os.getpid ()) DEF Tarea (Bloqueo): Buscar () lock.acquire () get () lock.release () SI el __name__ == ' __main__ ' : bloqueo = bloqueo () paraYo en Rango (10): # simulan concurrentes cliente 100 votos de agarre P = Proceso (target = Tarea, args = (Lock,)) p.start ()
# 共享数据,内存Manager, Lock -不推荐 de multiprocesamiento importación de Procesos, Gerente de bloqueo # tarea def (DIC, bloqueo): # lock.acquire () # DIC [ "count"] - = 1 # lock.release ( ) def tarea (DIC, bloqueo): con cerradura: DIC [ " contar " ] - = 1 si __name__ == " __main__ " : bloqueo = bloqueo () m = Manager () dict = m.dict ({ " cuentan " : 100 }) p_list = [] para i en gama (100 ): p = Proceso (target = tarea, args = (dict, bloqueo)) p_list.append (p) p.start () para p en p_list: p.join) ( impresión (dict)