美文网首页
python的多线程多进程

python的多线程多进程

作者: 云彩修建站站长 | 来源:发表于2019-10-24 23:07 被阅读0次

线程

python创建新线程的模块是threading,例子如下:

1. 创建一个类继承theading.Thread

import threading
import time

class MyThread (threading.Thread):   #继承父类threading.Thread
    def __init__(self, threadID, name, counter):
        threading.Thread.__init__(self)
        self.name = name

    def run(self):                   #把要执行的代码写到run函数里面 线程在创建后会直接运行run函数 
        print ("Starting " + self.name)
        time.sleep(1)
        print ("Exiting " + self.name)

# 创建新线程
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)
 
# 开启线程
thread1.start()
thread2.start()
 
print "Exiting Main Thread"

2. 直接利用thread.Thread产生线程

import threading

t=threading.Thread(target=func1,deamo=False,name="BIG",args=("hello"))
t.start() #启动线程

创建进程

python创建新线程的模块是multiprocessing,例子如下:

from multiprocessing import Process
import os

# 子进程要执行的代码
def run_proc(name):
    print('Run child process %s (%s)...' % (name, os.getpid()))

if __name__=='__main__':
    print('Parent process %s.' % os.getpid())
    p = Process(target=run_proc, args=('test',))
    print('Child process will start.')
    p.start()
    p.join()
    print('Child process end.')

p.join的作用是p这个进程先执行完,然后调用join的进程再继续执行。

如果想创建进程池,也是实用multiprocessing模块。

from multiprocessing import Pool
import os, time, random

def long_time_task(name):
    print('Run task %s (%s)...' % (name, os.getpid()))
    start = time.time()
    time.sleep(random.random() * 3)
    end = time.time()
    print('Task %s runs %0.2f seconds.' % (name, (end - start)))

if __name__=='__main__':
    print('Parent process %s.' % os.getpid())
    p = Pool(4)
    for i in range(5):
        p.apply_async(long_time_task, args=(i,))
    print('Waiting for all subprocesses done...')
    p.close()
    p.join()
    print('All subprocesses done.')

p.close(),在调用close()方法之后,就不能继续向p里面添加新的进程了。

相关文章

  • Python多线程,多进程

    以实用为目的,记几个python的多线程,多进程模块 一、多线程 Thread模块 Threading模块 当多线...

  • 多进程和多线程编程

    多任务的实现方式: 多进程模式 多线程模式 多进程 + 多线程 模式python即支持多进程,又支持多线程,如下进...

  • Python time、进程、线程、协程(异步IO)

    Python既支持多进程,又支持多线程 time 多进程 multiprocessing 通常在计算密集型时使用多...

  • python 进程,队列

    1.进程,队列 在python中虽然不能发挥多线程的优势,但是对于tensorflow中,多线程任务,我们可以写多...

  • 浅析python的GIL

    Python中的GIL锁 在Python中,可以通过多进程、多线程和多协程来实现多任务。 在多线程的实现过程中,为...

  • [CP_12] Python多线程爬虫应用实践(社招职位名称获取

    目录结构 一、多线程爬虫的使用 1. 多线程实现 <关联> [Pt_04] Python进程|多进程|线程|多线程...

  • GIL

    谈谈python的GIL、多线程、多进程 最近在看 Python 的多线程,经常我们会听到老手说:“python下...

  • python爬虫--day06

    进程 进程的概念 python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python...

  • 浅谈python中的多线程和多进程(二)

    原创:hxj7 本文继续分享一个关于python多线程和多进程区别的例子 前文《浅谈python中的多线程和多进程...

  • Python3 异步协程函数async具体用法

    之前使用Python的人往往纠缠在多线程,多进程,评判哪个效率更高?其实,相对于别家的协程和异步,不管多线程还是多...

网友评论

      本文标题:python的多线程多进程

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