python中的global关键字

这几天在做跨平台文件传输的时候,希望用到global关键字来做全局的速度限制,但是如果是多进程和多线程的环境,在不同平台上发现表现不同。具体结果如下:

#-*- coding: utf-8 -*-

# @Time    : 2016/12/15 15:02
# @File    : gconf.py
# @flag    : Dream of life......
import os
cruent = 1
def run_cunrent(*args):

    global cruent
    cruent = 2
    print 'run_crurnt',cruent,args,os.getpid()

def run_cunrent_pro(*args):
    global cruent
    print 'run_cunrent_pro',cruent,args,os.getpid()

import multiprocessing

if __name__ == '__main__':
    multiprocessing.freeze_support()
    import threading
    st = threading.Thread(target=run_cunrent, args=(1,))
    st.start()
    st.join()

    st = threading.Thread(target=run_cunrent, args=(3,))
    st.start()
    st.join()

    p = multiprocessing.Process(target=run_cunrent_pro, args=(2,))
    p.start()
    p.join()

在win上的输出如下:

  • run_crurnt 2 (1,) 23888
  • run_crurnt 2 (3,) 23888
  • run_cunrent_pro 1 (2,) 27112

在linux平台如下:

  • run_crurnt 2 (1,) 122126
  • run_crurnt 2 (3,) 122126
  • run_cunrent_pro 2 (2,) 122129

猜你喜欢

转载自www.cnblogs.com/sening/p/10535628.html