Problème de portée variable de Python. L'interpréteur traite le run_proc dans votre gcc comme une nouvelle variable.
Ajoutez simplement print avant global gcc.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from multiprocessing import Process
import os
gcc='parent'
# 子进程要执行的代码
def run_proc(name):
global gcc
####################################
print 'Son Process:',gcc
####################################
gcc='son'
print 'Son Process:',gcc
if __name__=='__main__':
p = Process(target=run_proc, args=('test',))
p.start()
p.join()
print 'Parent Process:',gcc
Vous pouvez obtenir les résultats souhaités.
Au fait, pensez à écrire le message d'erreur dans la question la prochaine fois.
Supplément : si vous supprimez la phrase gcc='son', vous pouvez toujours exécuter sans ajouter global En effet, gcc='son' est également utilisé par Python comme instruction de déclaration pour les variables locales dans la fonction. Le code original équivaut à ce que vous utilisiez d'abord la variable locale gcc puis que vous la déclariez, il y a donc une erreur. Si vous supprimez cette phrase, l'interpréteur Python pensera que vous utilisez des variables globales au lieu de variables locales.
Problème de portée variable de Python. L'interpréteur traite le
run_proc
dans votregcc
comme une nouvelle variable.Ajoutez simplement
print
avantglobal gcc
.Vous pouvez obtenir les résultats souhaités.
Au fait, pensez à écrire le message d'erreur dans la question la prochaine fois.
Supplément : si vous supprimez la phrase
gcc='son'
, vous pouvez toujours exécuter sans ajouterglobal
En effet,gcc='son'
est également utilisé par Python comme instruction de déclaration pour les variables locales dans la fonction.Le code original équivaut à ce que vous utilisiez d'abord la variable locale
gcc
puis que vous la déclariez, il y a donc une erreur. Si vous supprimez cette phrase, l'interpréteur Python pensera que vous utilisez des variables globales au lieu de variables locales.Votre
gcc
variable est définie en dehors de la fonction, mais vous l'appelez à l'intérieur de la fonction, vous obtiendrez donc l'erreur suivanteVous pouvez modifier le code comme suit et réessayer.
J'ai obtenu les résultats suivants :