pitón programación básica: multihilo pitón y uso eficiente del método de variables compartidas

Hoy pequeña para que todos puedan compartir una pitón multithreading y el método eficiente de utilizar las variables compartidas, tienen un buen valor de referencia, queremos ayuda. Venir a ver, para seguir la serie pequeña junto
multihilo pitón puede hacer que las tareas se ejecutan simultáneamente, pero a veces cuando se realizan múltiples tareas, aparece una variable "accidental".

import threading,time
n=0
start=time.time()
def b1(num):
 global n
 n=n+num
 n=n-num
def b2(num):
 for i in range(1000000):
 b1(num)
t1=threading.Thread(target=b2,args=(5,))
t2=threading.Thread(target=b2,args=(8,))
t1.start()
t2.start()
t1.join()
t2.join()
end=time.time()
print(n)
print(end-start)

Los resultados:

18
0.7520430088043213

variable de Visible n se convierte en 0 de 18, cuando se utiliza de 0,75 s, porque el sistema de ordenador calcula la similitud n = n + num se calcula en dos etapas, la primera n + num valor calculado en la memoria y se ha calculado valor asignado a n, es esta brecha llevado a la aparición de la variable "accidente".

Esto se puede utilizar cuando threading.Lock para bloquear la variable hilo, agotado y la liberación!

import threading,time
n=0
lock=threading.Lock()
start=time.time()
def b1(num):
 global n
 n=n+num
 n=n-num
def b2(num):
 for i in range(1000000):
  lock.acquire()#等待获取或获取修改变量的权限,并霸占它们
  b1(num)
  lock.release()#释放霸占的变量
t1=threading.Thread(target=b2,args=(5,))
t2=threading.Thread(target=b2,args=(8,))
t1.start()
t2.start()
t1.join()
t2.join()
end=time.time()
print(n)
print(end-start)

Los resultados:

0
3.335190773010254

Aunque el valor de la variable es correcta, pero los tiempos mucho más lento, la eficiencia es descontado en gran medida, la ventaja de múltiples hebras no se destacó.

Así que trate de utilizar variables locales en vez de variables globales en la rosca, para evitar el problema de la eficiencia.
De hecho, no sólo hay cosas técnicas, más técnico de los que, por ejemplo, cómo hacer que un programador bien, en lugar de "alambre de Gallo"

Programador en sí es un noble presencia, ah, ¿verdad?
El contenido de más de cuántos, y finalmente a recomendar una buena reputación

No. [] programadores universidades públicas, hay una gran cantidad de veteranos habilidades de aprendizaje, experiencia, habilidades de la entrevista, la experiencia laboral y otra cuota de aprendizaje, más

Hemos preparado cuidadosamente la basada en cero información introductoria, información sobre proyectos reales, el tiempo tiene que explicar la tecnología programador Python todos los días, compartir algo de aprendizaje

Métodos y necesidad de prestar atención a los pequeños detalles, que son bienvenidos a unirse, el futuro, más allá de codificación, hay que haga con no una persona

Tonto, un montón de dinero, viven un largo programador feliz ahora!Aquí Insertar imagen Descripción

Publicado 81 artículos originales · elogios ganado 18 · Vistas a 70000 +

Supongo que te gusta

Origin blog.csdn.net/chengxun02/article/details/105205534
Recomendado
Clasificación