zoukankan      html  css  js  c++  java
  • 多线程与多进程

    当我们需要同时执行多个任务的时候,可以采用多线程或者多进程的架构:

    如果是IO密集型任务,可以采用多线程,更好

    如果是计算密集型任务,最好采用多进程

    以下是python开启多进程与多线程的两种方式:

    多进程方式1:

    from multiprocessing import  Process
    import time
    #from threading import Thread ###这个是导入处理线程的模块
    ###这两个模块 一个处理线程 一个处理进程 用法是一模一样的 只需要学会一个 另一个就很好掌握了

    def task1 ():
    for i in range(10):
    print('%d 子进程1 is running' % i)
    time.sleep(1)

    def task2():
    for i in range(10):
    print("%d 子进程2 is running also " % i )
    time.sleep(1)

    # 在windonws 操作系统下面 ,开启子进程的操作必须写到 __main__ 下面去
    if __name__ == '__main__':
    # 开启了进程后如果调用的函数需要传参,可以用元组 位置参数的方式传
    # 也可以用字典 关键字参数的形式进行传
    obj1 = Process(target=task1)
    obj1.start()

    obj2 = Process(target=task2)
    obj2.start()

    多进程方式2:

    # #开启子进程的方式2
    # ##定义一个类继承原来的Process
    from multiprocessing import Process
    import time

    class Myprocess(Process):
    def __init__(self):
    super().__init__()

    def run(self):
    for i in range(10):
    print('%d 子进程1 is running' % i)
    time.sleep(1)

    if __name__ == '__main__':
    obj = Myprocess()
    obj.start()
    print('主程序')




    多线程方式1:
    from threading import Thread
    import time

    def task1():
    for i in range(10):
    print('%d 线程1 is running' % i)
    time.sleep(1)

    def task2():
    for i in range(10):
    print('%d 线程2 is running' % i)
    time.sleep(1)


    t1 = Thread(target=task1)
    t2 = Thread(target=task2)
    t1.start()
    t2.start()

    多线程方式2

    # 第二种方式
    from threading import Thread
    import time
    class MyThread(Thread):
    def __init__(self,name):
    super().__init__()
    self.name = name
    def run(self):
    for i in range(10):
    print('%s 子线程1 is running' % self.name)
    time.sleep(1)
    t1 = MyThread('jason')
    t1.start()

    t2 = MyThread('owen')
    t2.start()


  • 相关阅读:
    go channel select如何屏蔽已关闭通道
    go err
    在OneNote中快速插入当前日期和时间
    如何查看Isilon节点的硬件信息?
    一个可用来记录Isilon各个节点的CPU,网络,磁盘性能的命令
    Linux中如何查看文件夹的大小
    如何同步两台Linux机器的时间?
    Linux中的硬链接(hard link)和符号连接(symbolic link)
    在Cygwin里,如何进入到C盘?
    Remote Desktop Session中如何触发Ctrl+Alt+Delete?
  • 原文地址:https://www.cnblogs.com/1832921tongjieducn/p/12167323.html
Copyright © 2011-2022 走看看