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

python 多进程和多线程

2015-02-13 18:25 399 查看
多进程和多线程

#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import threading
import multiprocessing
import time

#Process entry
def process_worker(sign,lock,function):
global count_process
#lock.acquire()
count_process += 1
print(sign, os.getpid())
print apply(function)
#lock.release()

#Thread entry
def thread_worker(sign, lock,function):
global count_thread
lock.acquire()
count_thread += 1
print(sign, os.getpid())
print apply(function)
lock.release()

#real work functions
def Lee():
return 'I am Lee'
def Marlon():
return 'I am Marlon'
def Allen():
return 'I am Allen'

count_thread = 0
count_process = 0
if __name__=='__main__':
# Multi-process begin
multiprocessing.freeze_support() #window python 中需要,否则会出现随意打开很多进程的情况
print('Main:',os.getpid())
record = []
lock = multiprocessing.Lock()
func_list = [Lee,Marlon,Allen]
for function in func_list:
process = multiprocessing.Process(target=process_worker,args=('Process',lock,function))
process.start()
record.append(process)

for process in record:
process.join()
print "count_process value is", count_process #该值没有改变,多进程不共享内存

# Multi-thread begin
record = []
lock  = threading.Lock()
for function in func_list:
thread = threading.Thread(target=thread_worker,args=('thread',lock,function))
thread.start()
record.append(thread)

for thread in record:
thread.join()
print "count_thread value is", count_thread #该值改变,所以多线程共享内存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: