关于 python 多线程是否能用到多核的问题

164 views
Skip to first unread message

Wilhelm Shen

unread,
Jul 20, 2010, 4:29:17 AM7/20/10
to python-cn`CPyUG`华蟒用户组
这个实验很久以前做过,起几个线程,每个线程里面做空循环。
然后看能把多核用完吗。结果只有一个 cpu 100% 了。

好吧 GIL ……

前段时间又玩了下,结果多线程还真把我的双核给用完了。
用到 python2.5.5、python2.6.4、python2.7、
unladen swallow q3、pypy-jit1.3 。当然,结果都一样。

见附件。首先是单线程,只用了一个核
(另外一个核正在用于娱乐,所以还有一点点负载那)。

然后是多线程,两个核这就满了。

…… 大概空循环不会碰到 GIL 吧 ^_^b

和赖神提了下,我哪里搞错了?

赖神也试了下,在他那里仍然只用了一个核。OK ……

CPU: AMD Athlon(tm) Dual Core Processor 5000B
(也就是 AMD 2.6GHz x 2)

面壁中。

pymulticorethread.png

Zoom.Quiet

unread,
Jul 20, 2010, 4:34:39 AM7/20/10
to pyth...@googlegroups.com
2010/7/20 Wilhelm Shen <wile...@gmail.com>:
> 这个实验很久以前做过,起几个线程,每个线程里面做空循环。

测试脚本? 大家本地都测试一下?
- OS
- CPU
等等都不同时,可能有冼具...

> --
> 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
> 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
> 详情: https://groups.google.com/group/python-cn
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
>

--
http://zoomquiet.org 人生苦短? Pythonic!

沈崴

unread,
Jul 20, 2010, 4:42:34 AM7/20/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
On Jul 20, 4:34 pm, "Zoom.Quiet" <zoom.qu...@gmail.com> wrote:
> 2010/7/20 Wilhelm Shen <wilei...@gmail.com>:

> > 这个实验很久以前做过,起几个线程,每个线程里面做空循环。
>
> 测试脚本? 大家本地都测试一下?
> - OS
> - CPU
> 等等都不同时,可能有冼具...

# CPU: AMD Athlon(tm) Dual Core Processor 5000B

from thread import start_new_thread
def loop():
while 1:
pass
start_new_thread(loop, ())
start_new_thread(loop, ())
start_new_thread(loop, ())
loop()

Shell Xu

unread,
Jul 20, 2010, 4:43:02 AM7/20/10
to pyth...@googlegroups.com
奇怪了,按理是不可能的,哪个版本的python?不是用了移除GIL的版本吧?


--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp



--
无能者无所求,饱食而遨游,泛若不系之舟

MuSheng

unread,
Jul 20, 2010, 4:46:08 AM7/20/10
to pyth...@googlegroups.com
python想利用多核,用多進程multiprocessing吧,包你滿意。多線程利用核還沒
發現有相應的庫。

沈崴

unread,
Jul 20, 2010, 4:47:21 AM7/20/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
忘了,OS 是 ubuntu 10.4 。

>>> print platform.version()

#37-Ubuntu SMP Fri Jun 11 08:03:28 UTC 2010

刘鑫

unread,
Jul 20, 2010, 4:46:54 AM7/20/10
to pyth...@googlegroups.com
沈公你应该是这里的组件立功了吧


unladen swallow q3

pypy-jit1.3


在 2010年7月20日 下午4:29,Wilhelm Shen <wile...@gmail.com>写道:
这个实验很久以前做过,起几个线程,每个线程里面做空循环。
然后看能把多核用完吗。结果只有一个 cpu 100% 了。

好吧 GIL ……

前段时间又玩了下,结果多线程还真把我的双核给用完了。
用到 python2.5.5、python2.6.4、python2.7、
、。当然,结果都一样。


见附件。首先是单线程,只用了一个核
(另外一个核正在用于娱乐,所以还有一点点负载那)。

然后是多线程,两个核这就满了。

…… 大概空循环不会碰到 GIL 吧 ^_^b

和赖神提了下,我哪里搞错了?

赖神也试了下,在他那里仍然只用了一个核。OK ……

CPU: AMD Athlon(tm) Dual Core Processor 5000B
(也就是 AMD 2.6GHz x 2)

面壁中。
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp



--
 “那么告诉我,路西法·晨星,问问你们自己,你们所有人……若是十万天使军不再梦想天堂,地狱又有什么伟力?”——尼尔·盖曼《睡魔》
……

劉鑫
March.Liu

Zoom.Quiet

unread,
Jul 20, 2010, 4:49:13 AM7/20/10
to pyth...@googlegroups.com
2010/7/20 沈崴 <wile...@gmail.com>:

> # CPU: AMD Athlon(tm) Dual Core Processor 5000B
Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz
俺也是双核,也都用满了,,,
Ubuntu 10.04 i686

>
> from thread import start_new_thread
> def loop():
>        while 1:
>                pass
> start_new_thread(loop, ())
> start_new_thread(loop, ())
> start_new_thread(loop, ())
> loop()

--
http://zoomquiet.org 人生苦短? Pythonic!

zoomq-2010-07-20-164715_927x251_scrot.png
zoomq-cpuinfo.log

Shell Xu

unread,
Jul 20, 2010, 4:51:38 AM7/20/10
to pyth...@googlegroups.com
三年前的单核内牛满面飘过。
发现原因了么?

http://zoomquiet.org 人生苦短? Pythonic!

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp



--
无能者无所求,饱食而遨游,泛若不系之舟

Zoom.Quiet

unread,
Jul 20, 2010, 4:56:05 AM7/20/10
to pyth...@googlegroups.com

GKermit

unread,
Jul 20, 2010, 5:17:38 AM7/20/10
to pyth...@googlegroups.com
Dear all,

看看我的测试结果:

环境: Ubuntu 10.04
CPU : i5 430M 2.26Hz, 1066 MHz FSB

$ python --version
Python 2.6.5


$ cat myapp.py
#!/usr/bin/env python

import sys
from PyQt4 import QtCore, QtGui


class MyThread(QtCore.QThread):
def __init__(self,name,parent = None):
super(QtCore.QThread,self).__init__(parent)
self.name = name

def run(self):
while 1:
print self.name


app = QtGui.QApplication(sys.argv)

t1 = MyThread("*** thread 1")
t2 = MyThread(" ** thread 2")
t3 = MyThread(" * thread 3")

t1.start()
t2.start()
t3.start()
sys.exit(app.exec_())


运行结果在附件。 我是双核丝线程CPU,可见CPU确实开了3个线程。
为了区别于大家的测试,我用了PyQt的线程封装。

Thanks
Kermit


Screenshot.png

GKermit

unread,
Jul 20, 2010, 5:27:51 AM7/20/10
to pyth...@googlegroups.com

补充一下,我注意到了一个细节:
如果我开一个线程,如t1.start(),t2,t3不开的话,有一个CPU会占用到100%,其
他几个CPU不动,这个情况正常。

但是大家再回头看我前面的测试结果,虽然3个CPU线程跑起来了,但是很明显,都
没有占满CPU资源。 这个有何解释?

Regards
Kermit

pengfei xue

unread,
Jul 20, 2010, 5:30:22 AM7/20/10
to pyth...@googlegroups.com
如果是在intel的平台上做,那么intel的tbb是王道啊!
我试验过,可以让4个cpu的曲线接近一致

Kermit



GKermit

unread,
Jul 20, 2010, 5:31:36 AM7/20/10
to pyth...@googlegroups.com
On Tue, 2010-07-20 at 16:56 +0800, Zoom.Quiet wrote:
> 收录:
> http://wiki.woodpecker.org.cn/moin/MiscItems/2010-07-20
>

请问一下,ZQ那个测试工具在命令行里看CPU的是什么东东? top的某个命令吗?

Thanks
Regards
Kermit


闲云无心

unread,
Jul 20, 2010, 5:35:48 AM7/20/10
to pyth...@googlegroups.com


--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp


gnome自带的系统监视器...

GKermit

unread,
Jul 20, 2010, 5:38:17 AM7/20/10
to pyth...@googlegroups.com

ZQ那么明显是命令行的,下面半段是top的界面,我想知道怎么调出那个在命令行
里显示多CPU进度的。


闲云无心

unread,
Jul 20, 2010, 5:42:24 AM7/20/10
to pyth...@googlegroups.com
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com




最后一张是htop

GKermit

unread,
Jul 20, 2010, 5:46:06 AM7/20/10
to pyth...@googlegroups.com
On Tue, 2010-07-20 at 17:42 +0800, 闲云无心 wrote:

<snip>

> 最后一张是htop

哦,谢谢大家!

Linker

unread,
Jul 20, 2010, 8:08:53 AM7/20/10
to pyth...@googlegroups.com
多少年了~还在纠结这个多线程多核GIL问题~


2010/7/20 Zoom.Quiet <zoom....@gmail.com>



--
Regards,
Linker Lin

linker...@gmail.com

Able

unread,
Jul 21, 2010, 3:46:24 AM7/21/10
to pyth...@googlegroups.com
神奇,我的也是双内核都被占用了,每个占用50%左右,
Pentium dual-core CPU e5200 @2.50GHZ
win7系统

sj l

unread,
Jul 21, 2010, 7:14:16 AM7/21/10
to pyth...@googlegroups.com
可惜我的电脑是单核的老电脑

MC.Spring

unread,
Jul 21, 2010, 8:45:52 AM7/21/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
刚刚测试了一下:

Microsoft Windows XP

AMD Athlon(tm) 64 X2 Dual

Core Processor 3600+

Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit
(Intel)] on win32

结果:通过!

刘鑫

unread,
Jul 21, 2010, 9:00:41 AM7/21/10
to pyth...@googlegroups.com
这事儿神了……你们加些逻辑进去?

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp



--

机械唯物主义 : linjunhalida

unread,
Jul 21, 2010, 9:05:10 AM7/21/10
to pyth...@googlegroups.com
3个cpu都70%左右。

2010/7/21 刘鑫 <marc...@gmail.com>:

机械唯物主义 : linjunhalida

unread,
Jul 21, 2010, 9:08:17 AM7/21/10
to pyth...@googlegroups.com
改了一下,速度每个CPU都变成50%左右了。

from thread import start_new_thread
data = [12,]
def loop():
while 1:
data[0] = data[0] % 12
data[0] += 1


start_new_thread(loop, ())
start_new_thread(loop, ())
start_new_thread(loop, ())
loop()


2010/7/21 机械唯物主义 : linjunhalida <linjun...@gmail.com>:

机械唯物主义 : linjunhalida

unread,
Jul 21, 2010, 9:30:51 AM7/21/10
to pyth...@googlegroups.com
莫非是这个原因:
因为loop里面一直在pass,然后所有cpu的时间都用在醒过来-》取GIL-》没取到-》继续睡觉 这个过程上面了?
http://www.dabeaz.com/python/GIL.pdf
Screenshot-GIL.png

2010/7/21 机械唯物主义 : linjunhalida <linjun...@gmail.com>:
Screenshot-GIL.png

Linker

unread,
Jul 21, 2010, 10:21:48 AM7/21/10
to pyth...@googlegroups.com
GIL之所以会影响多核的利用,不是用这个case可以测试的出。
很多module是内部有加锁的和阻塞的。
这个才是关键的问题。
类似Apache和 nginx在性能上的差距的原因。
Python的垃圾回收的时候也是无法利用多核的时候。
很多服务器都卡在这上面。

2010/7/21 机械唯物主义 : linjunhalida <linjun...@gmail.com>
http://www.dabeaz.com/python/GIL.pdf

Pan Shi Zhu

unread,
Jul 21, 2010, 11:11:21 AM7/21/10
to pyth...@googlegroups.com
你这个例子用的是全局量,就这样的程序,貌似不论你用什么语言都需要加锁的。

2010/7/21 机械唯物主义 : linjunhalida <linjun...@gmail.com>:


> 改了一下,速度每个CPU都变成50%左右了。
>
> from thread import start_new_thread
> data = [12,]
> def loop():
> while 1:
> data[0] = data[0] % 12
> data[0] += 1
> start_new_thread(loop, ())
> start_new_thread(loop, ())
> start_new_thread(loop, ())
> loop()
>
>
> 2010/7/21 机械唯物主义 : linjunhalida <linjun...@gmail.com>:
>> 3个cpu都70%左右。
>>
>> 2010/7/21 刘鑫 <marc...@gmail.com>:
>>>
>>>
>>> 在 2010年7月21日 下午8:45,MC.Spring <here...@gmail.com>写道:
>>>>
>>>> 刚刚测试了一下:
>>>>
>>>> Microsoft Windows XP
>>>>
>>>> AMD Athlon(tm) 64 X2 Dual
>>>>
>>>> Core Processor 3600+
>>>>
>>>> Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit
>>>> (Intel)] on win32
>>>>
>>>> 结果:通过!
>>>

>>> 这事儿神了......你们加些逻辑进去?


>>>>
>>>> --
>>>> 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
>>>> 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
>>>> 详情: https://groups.google.com/group/python-cn
>>>> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
>>>
>>>
>>>
>>> --

>>> "那么告诉我,路西法·晨星,问问你们自己,你们所有人......若是十万天使军不再梦想天堂,地狱又有什么伟力?"----尼尔·盖曼《睡魔》
>>> ......


>>>
>>> 劉鑫
>>> March.Liu
>>>
>>> --
>>> 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
>>> 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
>>> 详情: https://groups.google.com/group/python-cn
>>> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
>>>
>>
>

机械唯物主义 : linjunhalida

unread,
Jul 21, 2010, 8:10:35 PM7/21/10
to pyth...@googlegroups.com
还是看我发的第二个内容,
虽然没有验证过,我还是觉得,GIL还是有的,
CPU冲高不是因为在做我们要它做的事情,而是消耗在其他的地方。
可以通过下面的代码来看(我在上面发的pdf里面的例子):

import os, timeit, threading

def count(n):
    while n>0:
        n -= 1

def serial(n):
    count(n)
    count(n)

def parallel(n):
    t1 = threading.Thread(target=count, args=(n,))
    t1.start()
    t2 = threading.Thread(target=count, args=(n,))
    t2.start()
    t1.join()
    t2.join()

print "serial: ", timeit.timeit(lambda:serial(10**8), number=1)
print "parallel: ", timeit.timeit(lambda:parallel(10**8), number=1)


结果(windows+python2.6):
python main.py
serial:  12.971452619
parallel:  25.7048534668

期间CPU没有冲高,估计是因为linux和windows下面thread的实现方式不同。

2010/7/21 Pan Shi Zhu <pan.s...@gmail.com>

沈崴

unread,
Jul 21, 2010, 9:17:37 PM7/21/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
写了个新的测试,非常简单,只能用到单核。看来空循环是个特例。

#!/usr/bin/env python
from time import time, sleep
from thread import start_new_thread
def ipp():
i = 0
while 1:
if time() > t:
print '[i]'%i
break
i += 1

t = time() + 5
start_new_thread(ipp, ())
start_new_thread(ipp, ())
start_new_thread(ipp, ())
start_new_thread(ipp, ())
ipp()
sleep(1)

线程开得越多,能做的循环就越少,性能越差。

大家洗洗睡吧,我继续面壁 。。。

On Jul 22, 8:10 am, 机械唯物主义 : linjunhalida <linjunhal...@gmail.com>
wrote:

Sparkle

unread,
Jul 21, 2010, 9:24:10 PM7/21/10
to pyth...@googlegroups.com
�Ҿ������°��python��΢������GIL�ķ�Χ���պ������ǵ�һ����ô�򵥵ij���
������

�� 2010-7-22 9:17, ���� �:
> д�˸��µIJ��ԣ��dz��򵥣�ֻ���õ����ˡ�������ѭ���Ǹ�����


>
> #!/usr/bin/env python
> from time import time, sleep
> from thread import start_new_thread
> def ipp():
> i = 0
> while 1:
> if time() > t:
> print '[i]'%i
> break
> i += 1
>
> t = time() + 5
> start_new_thread(ipp, ())
> start_new_thread(ipp, ())
> start_new_thread(ipp, ())
> start_new_thread(ipp, ())
> ipp()
> sleep(1)
>

> �߳̿���Խ�࣬������ѭ����Խ�٣�����Խ�
>
> ���ϴϴ˯�ɣ��Ҽ������ ������
>
> On Jul 22, 8:10 am, ��еΨ������ : linjunhalida <linjunhal...@gmail.com>
> wrote:
>> ���ǿ��ҷ��ĵڶ������ݣ�
>> ��Ȼû����֤���һ��Ǿ��ã�GIL�����еģ�
>> CPU��߲�����Ϊ��������Ҫ���������飬�������������ĵط���
>> ����ͨ������Ĵ����������������淢��pdf��������ӣ���


>>
>> import os, timeit, threading
>>
>> def count(n):
>> while n>0:
>> n -= 1
>>
>> def serial(n):
>> count(n)
>> count(n)
>>
>> def parallel(n):
>> t1 = threading.Thread(target=count, args=(n,))
>> t1.start()
>> t2 = threading.Thread(target=count, args=(n,))
>> t2.start()
>> t1.join()
>> t2.join()
>>
>> print "serial: ", timeit.timeit(lambda:serial(10**8), number=1)
>> print "parallel: ", timeit.timeit(lambda:parallel(10**8), number=1)
>>

>> ���(windows+python2.6)��


>> python main.py
>> serial: 12.971452619
>> parallel: 25.7048534668
>>

>> �ڼ�CPUû�г�ߣ���������Ϊlinux��windows����thread��ʵ�ַ�ʽ��ͬ��

刘鑫

unread,
Jul 21, 2010, 9:24:31 PM7/21/10
to pyth...@googlegroups.com
IO这里会不会也有问题,每个线程开一个socket呢?

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp



--

沈崴

unread,
Jul 21, 2010, 9:37:07 PM7/21/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
带 IO 阻塞,多线肯定比单线速度了。这个应该没问题了。

On Jul 22, 9:24 am, 刘鑫 <march....@gmail.com> wrote:
> IO这里会不会也有问题,每个线程开一个socket呢?

刘鑫

unread,
Jul 21, 2010, 9:51:01 PM7/21/10
to pyth...@googlegroups.com
在 2010年7月22日 上午9:37,沈崴 <wile...@gmail.com>写道:
带 IO 阻塞,多线肯定比单线速度了。这个应该没问题了。

我的意思是,会不会因为几个线程写同一个IO设备,被VM给默默的串起来了。如果给它们多几个IO,会不会观察到并行?
On Jul 22, 9:24 am, 刘鑫 <march....@gmail.com> wrote:
> IO这里会不会也有问题,每个线程开一个socket呢?

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

机械唯物主义 : linjunhalida

unread,
Jul 21, 2010, 9:57:07 PM7/21/10
to pyth...@googlegroups.com
空循环不是特例吧,
我还是觉得空循环冲高,是因为空循环会使得tick的间距缩短到最小,
然后python起来的操作系统线程,会不断地sleep->wake up->get GIL->sleep,
这样让CPU冲高,造成所有CPU都利用了的假象。

验证方法是我上面发的pdf,里面的实例,多线程反而比单线程要慢很多。

2010/7/22 沈崴 <wile...@gmail.com>

机械唯物主义 : linjunhalida

unread,
Jul 21, 2010, 9:59:39 PM7/21/10
to pyth...@googlegroups.com
昨天测试了多线程IO,本来以为会快一些,结果忘记自己只有一个硬盘,速度比单线程慢了一个数量级。
有谁有几个硬盘,或者一个硬盘一个网络来测试一下?

2010/7/22 刘鑫 <marc...@gmail.com>

GKermit

unread,
Jul 21, 2010, 10:06:09 PM7/21/10
to pyth...@googlegroups.com
On Thu, 2010-07-22 at 09:59 +0800, 机械唯物主义 : linjunhalida wrote:
> 昨天测试了多线程IO,本来以为会快一些,结果忘记自己只有一个硬盘,速度比
> 单线程慢了一个数量级。
> 有谁有几个硬盘,或者一个硬盘一个网络来测试一下?

这个我觉得有多个硬盘不会改变这个test case。 因为这种频繁读写在同一时间只
能有一个硬盘在处理,这种频繁操作应该没有办法交给DMA来做。只是猜测,不确
信。

Regards
Kermit


魏中华

unread,
Jul 21, 2010, 11:02:48 PM7/21/10
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
在 GIL 的紧箍咒下,一切测试都是虚幻,各位继续。

"机械唯物主义 : linjunhalida" <linjunhal...@gmail.com> wrote:
> 改了一下,速度每个CPU都变成50%左右了。
>
> from thread import start_new_thread
> data = [12,]
> def loop():
> while 1:
> data[0] = data[0] % 12
> data[0] += 1
> start_new_thread(loop, ())
> start_new_thread(loop, ())
> start_new_thread(loop, ())
> loop()
>
>
> 2010/7/21 机械唯物主义 : linjunhalida <linjun...@gmail.com>:
> > 3个cpu都70%左右。
> >
> > 2010/7/21 刘鑫 <marc...@gmail.com>:
> >>
> >>
> >> 在 2010年7月21日 下午8:45,MC.Spring <here...@gmail.com>写道:
> >>>
> >>> 刚刚测试了一下:
> >>>
> >>> Microsoft Windows XP
> >>>
> >>> AMD Athlon(tm) 64 X2 Dual
> >>>
> >>> Core Processor 3600+
> >>>
> >>> Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit
> >>> (Intel)] on win32
> >>>
> >>> 结果:通过!
> >>

> >> 这事儿神了......你们加些逻辑进去?


> >>>
> >>> --
> >>> 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
> >>> 退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
> >>> 详情: https://groups.google.com/group/python-cn
> >>> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> >>
> >>
> >>
> >> --

> >> "那么告诉我,路西法·晨星,问问你们自己,你们所有人......若是十万天使军不再梦想天堂,地狱又有什么伟力?"----尼尔·盖曼《睡魔》
> >> ......
> >>

victor lee

unread,
Jul 22, 2010, 1:45:58 AM7/22/10
to pyth...@googlegroups.com
multiprocessing 真的王道了。

2010/7/22 魏中华 <weizhon...@gmail.com>
Reply all
Reply to author
Forward
0 new messages