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!