并发编程[第一篇]线程

Posted on 2019-07-27 21:03  久腻-念  阅读(95)  评论(0)    收藏  举报

 一.线程的两种调用方式

--直接调用目标函数

import threading
import time
def myThreading():
    time.sleep(2)
    print('子线程正在运行',time.ctime())

def myThreading1():
    time.sleep(4)
    print('子线程1正在运行',time.ctime())


if __name__ == '__main__':
    q = threading.Thread(target=myThreading)
    q1 = threading.Thread(target=myThreading1)

    # q.setDaemon(True)
    # q1.setDaemon(True)

    q.start()
    q1.start()

    # q.join()
    # q1.join()

    print('主线程正在运行',time.ctime())

 

 

--继承父类Threading,通过改写run函数实现(执行start()函数时,会调用到run函数)

import threading
import time


class myThreading(threading.Thread):
    # time.sleep(2)
    # print('子线程正在运行')
    def __init__(self,name):
        super().__init__()
        self.name = name
    def run(self):
        time.sleep(2)
        print('子线程{}正在运行'.format(self.name))

class myThreading1(threading.Thread):
    # time.sleep(4)
    # print('子线程1正在运行')
    def __init__(self,name):
        super().__init__()
        self.name = name
    def run(self):
        time.sleep(4)
        print('子线程{}正在运行'.format(self.name))

if __name__ == '__main__':
    q = myThreading(1)
    q1 = myThreading1(2)

    # q.setDaemon(True)
    # q1.setDaemon(True)

    q.start()
    q1.start()

    # q.join()
    # q1.join()

    print('主线程正在运行')

 

同一进程中的多线程共享进程的资源

import threading
n=100 #在windows系统中应该把全局变量定义在if __name__ == '__main__'之上就可以了
def work():
    global n
    n=0
    print('子进程内: ',n)

#线程直接的内存空间是共享的
if __name__ == '__main__':
    p=threading.Thread(target=work)
    p.start()
    print('主进程内: ',n)

 

 

未完待续。。。。。。。    同步锁,死锁,线程队列

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3