Python多线程程序被操作系统杀死

时间:2016-12-06 04:09:27

标签: python linux multithreading

我很好奇python如何实现多线程以及GIL如何影响性能。我刚开始在虚拟机ubuntu 15.04 guest上测试一些简单的python脚本性能。但我遇到了一个问题:多线程脚本在执行一小段时间后就被杀死了。

修改
我发现问题出在了:

for _ in range(200000000):

如果我将范围(python 2.7)更改为xrange,那么它会没问题。 我知道这是因为range返回一个列表而xrange只返回一个迭代器。 但我仍然想知道range()的限制是什么。

我的测试环境:

NAME =“Ubuntu”

VERSION =“15.04(Vivid Vervet)”

2015 x86_64 x86_64 x86_64 GNU / Linux

Linux 3.19.0-15-generic(simon-VirtualBox)12/06/2016 _x86_64_(1 CPU)

脚本

 #! /usr/bin/python

from threading import Thread
import time

def my_counter():
    i = 0
    for _ in range(100000000):
        i = i + 1
    return True

def main():
    thread_array = {}
    start_time = time.time()
    for tid in range(2):
        t = Thread(target=my_counter)
        t.start()
        thread_array[tid] = t
    for i in range(2):
        thread_array[i].join()
    end_time = time.time()
    print("Total time: {}".format(end_time - start_time))

if __name__ == '__main__':
    main()

输出

simon@simon-VirtualBox:~/Dropbox/python/GIL$ time py multiThread.py 
Killed

real    0m6.712s
user    0m2.832s
sys 0m3.056s

问题

这个问题与单个cpu有关,还是我误解了什么?

0 个答案:

没有答案