| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1268 人关注过本帖
标题:请教一个Python 多线程程序流程的问题
取消只看楼主 加入收藏
imspp
Rank: 2
等 级:论坛游民
威 望:3
帖 子:6
专家分:14
注 册:2010-4-4
结帖率:0
收藏
已结贴  问题点数:0 回复次数:1 
请教一个Python 多线程程序流程的问题
本人接触Python不久,最近开发中需要处理一种状况

由一个循环线程全程对一个变量CP 进行价值,周期为一秒一次

然后又有N个线程分别以不同的周期对这个CP 进行不同的减值,

我研究了半天,貌似用GIL 的话要过多的等待分支线程回来,可能会造成不同步的错误结果

特来求教,请高手指点一下,我现在完全没思路啊。。。。谢谢了 ~~~
搜索更多相关主题的帖子: Python 流程 线程 
2010-04-04 21:03
imspp
Rank: 2
等 级:论坛游民
威 望:3
帖 子:6
专家分:14
注 册:2010-4-4
收藏
得分:0 
多谢几位热心人的回帖,以及版主的详细解答,不过我现在的主要问题是。。。无法实现一个线程以上的长循环比如下面这个,我写的例子,

我定义了一个方法每一秒CP+1(100/100),启动一个线程调用这个方法

然后定义了一个方法来减少CP,每次减少1,然后启动5个线程来调用这个方法

但是我始终无法然两个线程同时,同步跑下去,第二个方法只会执行一次就没了
程序代码:
import threading
from time import sleep,ctime

def Capacity(MaxCapacity,Recharge_time):#增加CP 的方法
    global cp
    while 1:
        print 'cp:',cp
        cp = cp+MaxCapacity/Recharge_time
        print 'now cp:',cp
        sleep(1)
   
def Pao(cpxh,atime):#减少CP 的方法
    while 1:
        global cp
        print 'pao:',cp
        cp = cp -cpxh
        print 'pao now cp',cp
        sleep(atime)
   
def main():
    print '\nGO'
    threads=[]
    threads2=[]

    t=threading.Thread(target=Capacity,args=(100,100))
    threads.append(t)
    #print threads
    threads[0].setDaemon(True)#守护线程
    threads[0].start()#启动累加线程
    print 'cp thread over!',cp
   
    for i in range(5):
       
        p=threading.Thread(target=Pao,args=(2,3))
        threads2.append(p)
        print 'pao%s ----------go!'%(threads2[i]),cp
        threads2[i].start()
        print 'pao%s ----------end'%(threads2[i]),cp
   
cp=100
if __name__=='__main__':
    main()

2010-04-05 16:01
快速回复:请教一个Python 多线程程序流程的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016965 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved