multiprocessing 包介绍
# -*- coding: utf-8 -*-
import multiprocessing
import time
def foo_pool(x):
#这里不可以访问到主进程的变量
time.sleep(0.2)
return x*x
result_list = []
result_list1 = []
def apply_async_with_callback():
def cb(result):
# 这里可以访问到主进程的变量
result_list.append(result)
pool = multiprocessing.Pool()
for i in range(10):
xx=pool.apply_async(foo_pool, args = (i, ), callback = cb)
result_list1.append(xx)
pool.close() #等待所有的子进程都执行完毕再关闭 进程池
#pool.terminate()
pool.join()
print(result_list)
print result_list1[1].get() #获取数据 get()
if __name__ == '__main__':
apply_async_with_callback()
from multiprocessing import Process, Pipe,freeze_support
import threading
import time
import urllib2
def f(conn):
while True:
url = conn.recv()
print url
content_stream = urllib2.urlopen(url)
content = content_stream.read()
conn.send("done+"+url)
#conn.close()
tasks=[]
for i in xrange(1,15):
tasks.append("http://www.jd.com?a="+str(i))
def thread_f1():
parent_conn, child_conn = Pipe()
p = Process(target=f, args=(child_conn,))
p.start()
while True:
z=tasks.pop()
print z+"_____"
parent_conn.send(z)
html=parent_conn.recv()
print html
pass
if __name__ == '__main__':
freeze_support()
threads = []
t1 = threading.Thread(target=thread_f1,args=())
threads.append(t1)
t1.start()