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
落霞与孤鹜齐飞,秋水共长天一色。