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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章