求解一个数学题

求解一个数学题

1+2+3+4....+100=?
要求例用多线程方式:
用10个线程计算
得其值


求代码....

谢谢!~~


[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/env python

import threading
threads=[]
result=[]

class T(threading.Thread):
    def __init__(self, func, args, name=''):
        threading.Thread.__init__(self)
        self.func=func
        self.args=args
        self.name=name

    def run(self):
        self.res=self.func(self.args)

    def value(self):
        return self.res


threads=[T(sum, range(i,i+10)) for i in range(1,101,10)]
for t in threads:
    t.start()
for t in threads:
    t.join()
print sum([i.value() for i in threads])

def __init__(self, func, args, name='')
这句中的func 与args有什么作用.
self.func=func
self.args=args
这二个中的self.func与self.args都是来于thread继承过来的吗?主要作用是作什么


QUOTE:
原帖由 nameliba 于 2008-8-26 12:19 发表
def __init__(self, func, args, name='')
这句中的func 与args有什么作用.
self.func=func
self.args=args
这二个中的self.func与self.args都是来于thread继承过来的吗?主要作用是作什么

func与args是构建类的实例时传递来的参数。
func是计算方法,这里传递的是sum,即求和。
args是func的参数,这里是求和的对象。

self.func和self.args是初始化数据属性,不是继承来的。
建议你看一下Python中类的相关知识。
[T(sum, range(i,i+10)) for i in range(1,101,10)]
sum([i.value() for i in threads])
这二句没有看懂,

没有见过for 的这种用法.


[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/env python

import threading
threads=[]
result=[]

class T(threading.Thread):
    def __init__(self, func, args, name=''):
        threading.Thread.__init__(self)
        self.func=func
        self.args=args
        self.name=name

    def run(self):
        self.res=self.func(self.args)

    def value(self):
        return self.res


for i in range(1,101,10):
    threads.append(T(sum, range (i,i+10)))

for t in threads:
    t.start()
for t in threads:
    t.join()

s=0
for i in threads:
    s+= i.value()

print s

把代码改了一下,现在应该好理解了吧?跟前面基本是等价的。
关于 for 的这种用法,见下面这个帖子的第 10 楼:

http://bbs.chinaunix.net/thread-1251298-1-1.html


QUOTE:
原帖由 nameliba 于 2008-8-26 14:32 发表
[T(sum, range(i,i+10)) for i in range(1,101,10)]
sum()
这二句没有看懂,

没有见过for 的这种用法.

呵呵,如果你学过C#会好理解一点。
也可以用自然语言理解:
sum([i.value() for i in threads])

对于列表threads中的每个元素i,取i的value属性。
用[]括起来就是生成一个由这些value值组成的列表。
sum函数把列表里的这些值加在一起。
result=[] 这个用来做什么的,好像都没有用上.
那个没用的,直接删掉。

开始想把各线程的计算结果读出来,放里面,后来改了思路,但忘记删除了。