美文网首页
[Python]multiprocessing学习记录

[Python]multiprocessing学习记录

作者: Jake_Zhu | 来源:发表于2019-06-10 14:59 被阅读0次

我的python环境 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6

安装

pip3 install multiprocess


随便找了个打印测试

from multiprocessing import Process

def fuck(i):
    print("fuck zhangenmei",i)

for i in range(10):
    p = Process(target=fuck(i))
    p.start()

哈?,是我写错了吗,怎么是有序的

image.png

我觉得可能是方法执行的东西太少了,所以我加一个循环试试看

def fuck(i):
    for j in range(i):
        print("fuck zhangenmei",i,'-',j)
    # print(threading.current_thread())

def printTest():
    for i in range(10):
        p = Process(target=fuck,args=(I,))
        p.start()

printTest()

仍然是有序的,所以我决定先去百度

image.png
from multiprocessing import Process
import threading
import os

def fuck(i):
    for j in range(i):
        print("进程",i,'-',j,'id',os.getpid())
        print(threading.current_thread())

def printTest():
    for i in range(10):
        p = Process(target=fuck,args=(I,))
        # print('进程',i,'process start')
        p.start()

printTest()

那么现在文明一点

image.png

我本以为进程会同时执行

我现在的疑问是:为什么不是并行?

这里开始就需要进程池了

from multiprocessing import Process
import multiprocessing
import threading
import time
import os

def fuck(i):

    for j in range(i):
        print('进程', i, 'start')
        # time.sleep(3)
        print("进程",i,'-',j,'id',os.getpid())
        # print(threading.current_thread())

def printTest():
    pool = multiprocessing.Pool(processes = 5)
    for i in range(5):
        p = Process(target=fuck,args=(I,))
        print('进程',i,'will start')
        pool.apply_async(fuck,(I,))
    print('end')
    pool.close()
    pool.join()

printTest()
image.png

告辞!

相关文章

网友评论

      本文标题:[Python]multiprocessing学习记录

      本文链接:https://www.haomeiwen.com/subject/imyzxctx.html