线程是公用内存,进程内存相互独立
python多线程只能是一个cpu,java可以将多个线程平均分配到其他cpu上
以核为单位,所以GIL(全局锁,保证线程安全,数据被安全读取)最小只能控制一个核,很多人说python是假并发,因为一个核只能跑一个线程,后来有了多进程,可以利用多个cpu处理,但是缺点是耗费资源(因为开启一个进程就会开辟一个内存空间);进程相互通信。
调用方法使用多线程
一、多线程并发:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import threading
import time
def run(num):
print 'Hi,I am the thread',num
time.sleep(1)
for i in range(20):
t = threading.Thread(target=run,args=(i,))
t.start()
同一时间运行run函数20次
二、多线程,每个线程都不会再同一时间运行
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import threading
import time
def run(num):
print 'Hi,I am the thread',num
time.sleep(1)
for i in range(20):
t = threading.Thread(target=run,args=(i,))
t.start()
t.join() #每个线程关系都比较紧密,执行完一个线程在执行下一个,所以会有等待时间
继承方法使用多线程多并发
import threading
import time
class MyThread(threading.Thread):
def __init__(self,name):
threading.Thread.__init__(self)
self.name = name
def run(self):
print 'Hi,i am thread',self.name
time.sleep(2)
for i in range(10):
t = MyThread(i)
t.start()