Python如何实现多线程与多进程的配合工作?

飘雪的冬夜 发布于 2015/06/04 18:39
阅读 1K+
收藏 2
#!/usr/bin/env python
#coding=utf8

import multiprocessing
import threading
import threadpool
import time
import re
import os
'''
想法:
	开启了11个进程,第一个进程是以多线程方式运行,再通过进程间通信来使其他进程工作.
'''
def put_test(str1):		# 处理出函数名,开启多线程
	print str1,
	q.put(str1)
	time.sleep(1)
def get_test():					# 进程池除第一个以外的进程
	print '    5'
	print q.qsize(),os.getpid()
	print q.get(True,1)
	time.sleep(1)
	###############################################################
if __name__=='__main__':
	multiprocessing.freeze_support()
	q=multiprocessing.Queue(maxsize = 10)
	# 线程池
	data=range(1,11)
	pool=threadpool.ThreadPool(10)
	requests=threadpool.makeRequests(put_test,data)
	[pool.putRequest(req) for req in requests]
	pool.wait()
	# 进程池
	pool2 = multiprocessing.Pool(processes=3)
	for var in range(1,11):	# 20个进程
		pool2.apply_async(get_test,[])
	pool2.close()
	pool2.join()
	print "size:",q.qsize()

get_test()运行不正常,觉得put_test()在q里面放入的数据,在get_test()中读不出来。不知道要如何实现多线程与多进程的同时运行。有没有人知道如何做啊。。。谢谢啦


加载中
0
飘雪的冬夜
求助,感谢好心人。。。
返回顶部
顶部