您的位置:首页 > 编程语言 > Python开发

Python多线程(Thread)

2017-09-11 08:32 148 查看
线程:所有线程运行在同一个进程中,共享相同的运行环境。

1.每一个独立的线程有一个程序运行到的入口,顺序执行序列和程序和出口。

2.线程的运行可以被抢占(中断),或暂时被挂起(睡眠),让其他线程运行(让步)。

3.一个进程中的各个线程间共享同一片数据空间

进程:程序的一次执行(程序装载入内存,系统分配资源运行)

1.每个进程都有自由的内存空间,数据栈等,只能使用进程间通讯,而不能直接共享信息。

Example One 并发执行两个单线程:

from threading import Thread
import time

def my_counter():
print('Go Into my_counter...')
i = 0
for _ in range(100000000):
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
print('tid = ',tid,'thread_array[tid] = ',thread_array[tid])
for i in range(2):
print('Thread need to join...')
thread_array[i].join()
print('Thread Done...')
end_time = time.time()
print('Total time: {}'.format(end_time - start_time))

if __name__ == '__main__':
main()




join 的作用是阻塞进程直到线程执行完毕

Example Two : 顺序执行两个单线程:

from threading import Thread
import time

def my_counter():
print('Go Into 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)
print('t = ',t)
t.start()
t.join()
end_time = time.time()
print('Total Time:{}'.format(end_time - start_time))

if __name__ == '__main__':
main()




可以看到顺序执行两个单线程的耗时比并发执行两个线程还要快点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: